[^출처 : Kubernetes 공식 문서]: Kubernetes Deployment
위 실습에서 Deployment를 생성했을 때 쿠버네티스는 애플리케이션 인스턴스에 자동으로 Pod를 생성한다. Pod는 쿠버네티스 플랫폼에서의 최소 단위이며, Deployment를 생성할 때 Deployment는 컨테이너 내부에서 컨테이너와 함께 파드를 생성한다.
각 파드는 Deployment에 의해 스케줄되어진 노드에게 묶이며, 노드에 문제가 생길 경우 클러스터 내의 가용한 다른 노드들을 대상으로 스케줄링된다.
각 Pod는 각기 다른 IP 주소를 가지고 있으며 Pod 내에는 공유 스토리지(volume), 컨테이너화 된 앱 등이 포함되어 있다.
[^출처 : Kubernetes 공식 문서]: Kubernetes Deployment
Pod는 항상 Node상에서 동작한다. Node는 Master Node에 의해 관리가 되며, 하나의 노드는 여러개의 Pod를 가질 수 있다. Master Node는 클러스터 내 Node를 통해서 Pod에 대한 스케줄링을 자동으로 처리한다.
Kubelet이란?
Master Node와 Worker Node 간 통신을 책임지는 프로세스이다.
Container Runtime이란?
레지스트리에서 컨테이너 이미지를 가져와 묶여 있는 것을 풀고 애플리케이션을 동작시키는 역할을 맡는다. 대표적으로 도커, CRI-O, containerd가 있다.
앞선 실습에서 Deployment를 이용하여 Pod를 생성했었다. Pod 정보를 확인하는 명령어는 아래와 같다.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
kubernetes-bootcamp-765bf4c7b4-vxskv 0/1 Pending 0 5s
pod 컨테이너의 IP주소, 포트, 이벤트 리스트 등을 확인하기 위해서는 describe 명령어를 사용하면 된다.
$ kubectl describe pods
앞선 실습에서 시행한 것 처럼 외부 네트워크에서의 접근을 가능하게 하기 위해 새로운 탭에서 proxy를 설정해주고 curl 명령어를 통해서 애플리케이션의 결과를 확인한다.
//another tab
$ kubectl proxy
//original tab
$ curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-765bf4c7b4-jf7dn | v=1
컨테이너의 로그를 확인하기 위해서는 logs 명령어를 사용한다.
$ kubectl logs $POD_NAME
Kubernetes Bootcamp App Started At: 2021-03-23T04:55:26.798Z | Running On: kubernetes-bootcamp-765bf4c7b4-wr5g9
Running On: kubernetes-bootcamp-765bf4c7b4-wr5g9 | Total Requests: 1 | App Uptime: 12.526 seconds | Log Time: 2021-03-23T04:55:39.324Z