
이번 강의에선 쿠버네티스에서 파드(Pod) 가 동작하는 과정과 그 흐름을 알아보도록 하겠습니다.
우선 쿠버네티스 클러스터에는 마스터 노드와 워커 노드가 있습니다. 클러스터에서 우리가 웹서버를 배포한다고 가정해볼게요. 예를 들어, nginx 웹서버를 파드로 실행시키는 명령을 내리면 어떻게 동작할까요?
먼저, 여러분이 쿠버네티스 API에 파드를 요청하면, 쿠버네티스가 다음과 같은 흐름으로 작업을 처리합니다.
API 서버에서 입력한 명령이 올바른지 문법 검사를 합니다. 여기서 문법과 필요한 정보들이 제대로 작성되었는지 확인한 뒤, 클러스터 내에서 리소스 상태를 관리하는 etcd에 그 정보를 저장합니다.
스케줄러(Scheduler) 는 이 파드를 어느 워커 노드에 배포할지 결정합니다. 스케줄러는 현재 노드들의 자원 상태를 파악한 후, 가장 적합한 워커 노드를 선택합니다.
선택된 워커 노드에 파드가 배포되면, 그 파드의 상태는 처음에 Pending 상태로 시작됩니다.
컨테이너 런타임이 파드에 정의된 컨테이너를 실제로 실행하기 시작하면, 파드 상태는 Running으로 전환됩니다.
만약 실행 중 오류가 발생하면 파드 상태가 Failed로 바뀔 수 있고, 정상적으로 동작이 완료되면 Succeeded 상태로 변경됩니다. 이 과정이 성공적으로 이루어지면, 파드는 계속 Running 상태를 유지하게 됩니다.
먼저 원활한 진행을 위해 기존의 모든 파드를 삭제합니다.

파드 전부 삭제됌

처음부터 파드 생성을 다시 한번 따라해볼까요? 우선 nginx 웹서버 파드를 하나 만들어 보겠습니다.
kubectl run nginx-pod --image=nginx:latest

이 명령어로 파드를 생성한 후, 파드가 실제로 어떻게 배포되고 실행되는지 모니터링할 수 있습니다. 명령어를 통해 파드의 상태 변화를 실시간으로 볼 수 있습니다.
kubectl get pods --watch

여기에서 파드의 상태가 Pending에서 Running으로 바뀌는 것을 확인할 수 있습니다. 이때, 파드가 Running 상태로 바뀌면, 파드가 정상적으로 워커 노드에 배포되었다는 의미입니다.
다음으로는 생성한 파드를 삭제해보겠습니다. 파드를 삭제하면, 다시 상태가 어떻게 변하는지도 모니터링할 수 있습니다.
kubectl delete pod nginx-pod

이 명령을 실행하면 파드 상태가 Terminating으로 바뀌고, 곧 파드가 완전히 삭제되면 Deleted 상태가 됩니다.

파드의 상태를 좀 더 세부적으로 보고 싶다면, describe 명령어를 사용할 수 있습니다.
kubectl describe pod nginx-pod
이 명령어는 파드의 상세한 이벤트와 컨테이너 상태를 보여줍니다. 여기서 이미지 다운로드 문제, 네트워크 오류 등의 이슈도 확인할 수 있습니다.
모든 namespace 안에서 동작하는 파드는 실제 더 많이 있다. 아래와 같은 파드는 쿠버네티스 클러스터 구성 시 포함되는 파드라고 생각하면 됌.

kubectl run redis --image=redis123 --dry-run
kubectl run redis --image=redis123 --dry-run -o yaml > redis.yaml

아래와 같이 남기고 다 지우기






redis123을 redis로 수정한 뒤 저장


Pending, Running, Failed, Succeeded 등의 상태로 나타날 수 있습니다.kubectl get pods 명령어로 파드의 상태를 실시간으로 모니터링할 수 있습니다.kubectl describe pod 명령어를 사용하여 파드의 상세 이벤트와 문제를 확인할 수 있습니다.