본문 바로가기

Infra/Kubernetes

4. 파드와 노드

파드(POD)란 무엇인가?

파드는 하나 또는 그 이상의 애플리케이션 컨테이너 (도커 또는 rkt와 같은)들의 그룹을 나타내는 쿠버네티스의 추상적 개념으로 일부는 컨테이너에 대한 자원을 공유한다. 그 자원은 다음을 포함한다:

  • 볼륨과 같은, 공유 스토리지
  • 클러스터 IP 주소와 같은, 네트워킹
  • 컨테이너 이미지 버전 또는 사용할 특정 포트와 같이, 각 컨테이너가 동작하는 방식에 대한 정보

Pod 개요

만약 컨테이너들이 밀접하고 결합되어 있고 디스크와 같은 자원을 공유해야 한다면 오직 하나의 단일 파드에 함께 스케쥴되어져야 한다.

 

노드(Node)란 무엇인가?

노드는 쿠버네티스에서 워커 머신을 말하며 클러스터에 따라 가상 또는 물리 머신일 수 있다. 파드는 언제나 노드 상에서 동작한다. 

  • 각 노드는 마스터에 의해 관리된다.
  • 하나의 노드는 여러 개의 파드를 가질 수 있고,
  • 쿠버네티스 마스터는 클러스터 내 노드를 통해서 파드에 대한 스케쥴링을 자동으로 처리한다.

모든 쿠버네티스 노드는 최소한 다음과 같이 동작한다.

  • Kubelet은, 쿠버네티스 마스터와 노드 간 통신을 책임지는 프로세스이며, 하나의 머신 상에서 동작하는 파드와 컨테이너를 관리한
  • (도커, rkt)와 같은 컨테이너 런타임은 레지스트리에서 컨테이너 이미지를 가져와 묶여 있는 것을 풀고 애플리케이션을 동작시키는 책임을 맡는다.

노드 개요

Kubectl로 자원관리하기

  • kubectl get - 자원을 나열한다
  • kubectl describe - 자원에 대해 상세한 정보를 보여준다.
  • kubectl logs - 파드 내 컨테이너의 로그들을 출력한다
  • kubectl exec - 파드 내 컨테이너에 대한 명령을 실행한다.

 

실습

List Pods

kubectl get pods

Describe Pods

kubectl describe pods

Find the Pod Name

export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
echo Name of the Pod: $POD_NAME

// Curl Version
curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/

Show Pod Log 

kubectl logs $POD_NAME

 

Show Environment Variables

kubectl exec $POD_NAME env

Start a Bash Session in the Pod's Container

kubectl exec -ti $POD_NAME bash

 

 

참고 :  https://kubernetes.io/ko/docs/tutorials/kubernetes-basics/explore/explore-intro/