[MacOS 환경 #2]쿠버네티스 실습, 파드 생성 및 컨테이너 실행해보기

도람·2025년 11월 8일
post-thumbnail

쿠버네티스가 컨테이너를 실행하고 관리하기

전 게시글에서

  • 파드는 대게 컨테이너 하나를 포함하는데, 설정에 따라 파드 하나가 여러개의 컨테이너를 포함하고 , 파드에 포함된 모든 컨테이너는 같은 가상환경에 포함된다.
  • 각각 파드에는 IP 주소가 부여되는데, 파드에 포함된 모든 컨테이너는 이 IP주소를 공유한다.
  • 파드에 포함된 IP주소가 여러개면 서로 localhost로 소통할 수 있다.

라고 적어놓았다. 이번에는 파드를 직접 실행하고 추상화된 컨테이너는 어떤 것인지 알아보려 한다.

파드 실행하기

kubectl run hello-docker --image=nginx

이 명령어는

  • hello-docker : 파드의 이름
  • nginx : 컨테이너 이미지

->즉 nginx라는 컨테이너 이미지를 가진 hello-docker 라는 이름을 가진 파드를 실행하는 명령어이다.

실행하면 다음과 같이 상태가 뜬다.


파드가 준비 상태가 될 때까지 대기

kubectl wait --for=condition=Ready pod/hello-docker

이 명령어는 파드가 Ready(정상 실행) 상태가 될 때까지 대기한다.
즉, 파드가 스케줄링되고 컨테이너가 모두 기동될 때까지 기다린다는 의미이다.


실행하면 위와 같이 hello-docker condition met 라는 메시지가 출력된다.

이 메시지의 의미는,
hello-docker라는 이름을 가진 파드가 요청한 조건(Ready 상태) 을 충족(met) 했다는 뜻이다.


🔎kubectl wait 실행 결과별 의미

위에서는 met으로 충족했다고 떴지만 여러 결과가 반환될수도 있다.

  • ✅condition met : 지정된 조건이 충족.
  • ⏳timed out waiting for condition : 설정된 시간 안에 조건이 충족되지 않음(기본 30초, timeout 설정으로 변경 가능)
  • ⚠️error : no machting resources found : 지정된 리소스(파드나 서비스)가 존재하지 않음.
  • 🚫condition not met : 조건이 충족되지 않음. (파드가 아직 준비 중이거나 CrashLoopBackOff상태일 수 있음.)

🧩Pod condition

Pod의 Condition이란 말그대로, 파드의 현재 상태를 표현하는 지표이며 위에서는 "Ready"를 썼지만,
대표적으로 다음 4가지가 있다.

  • PodScheduled : 파드가 노드에 스케줄링됨
  • Initialized : 파드의 초기화 컨테이너가 모두 완료됨
  • ContainersReady : 파드 내 모든 컨테이너가 준비됨
  • Ready : 파드가 요청을 처리할 준비가 완료됨 (서비스 트래픽 수신 가능)

클러스터에 있는 모든 파드의 목록 출력

kubectl get pods

이 명령어를 실행하여 현재 클러스터에 어떤 파드가 떠 있는지 확인할 수 있다.

이렇게 현재 hello-docker 라는 파드가 잘 떠있음을 확인할 수 있다.


Docker desktop으로 파드 확인하기

파드가 생성되면, 실제로는 컨테이너 런타임(Docker) 이 그 내부의 컨테이너를 실행한다.
따라서 Docker Desktop에서도 hello-docker라는 이름의 컨테이너를 직접 확인할 수 있다.

처음엔 이 컨테이너를 삭제했는데, 새로고침할 때마다 다시 생성되는 걸 보고 “왜지?” 싶었다.
조사해보니, 이것은 쿠버네티스의 Self-Healing(자가 복구) 기능 때문이었다.

즉, Docker Desktop에서 컨테이너를 삭제하더라도,
쿠버네티스는 “파드가 사라졌다”고 인식하고 자동으로 새로운 파드를 다시 생성한다.

따라서 Docker Desktop에서 삭제 후 새로고침하면 컨테이너가 다시 나타나며,
터미널에서 kubectl get pods 명령을 실행해도 파드가 여전히 존재하는 것을 확인할 수 있다.

파드 및 Deployment 삭제하기

만약 정말로 완전히 삭제하고 싶다면,
아래 명령어를 사용해 파드 또는 Deployment를 제거해야 한다.

kubectl delete pod hello-docker

또는

kubectl delete deploy hello-docker

그 후 다시 확인하면

이제 hello-docker 라는 파드가 온전히 사라진 것을 확인할 수 있다.

요약

kubectl run → 파드 생성
kubectl wait → 파드가 준비될 때까지 대기
kubectl get pods → 파드 상태 확인
docker desktop -> 관리
이 단계로 쿠버네티스에서 컨테이너가 실제로 어떻게 실행되고 관리되는지를 확인할 수 있다

profile
정도를 걷는 엔지니어

0개의 댓글