🔄 Kubernetes Pod 이미지 변경 시 컨테이너 재시작 동작 이해하기

2026. 2. 21. 14:53k8s

Kubernetes에서 실행 중인 Pod의 이미지를 변경하면 어떤 일이 발생할까?

이번 글에서는 kubectl set image 명령어를 통해
Pod의 이미지를 변경하고, 컨테이너가 재시작되는 과정을 직접 확인해본다.


📌 기본 개념

Pod의 spec.containers[].image 필드는 변경 가능하다.

이미지를 변경하면 Kubernetes는:

  1. 기존 컨테이너 종료
  2. 새로운 이미지 Pull
  3. 컨테이너 재생성

과정을 수행한다.

중요한 점은:

Pod 자체가 삭제되는 것이 아니라
컨테이너만 재생성된다.


1️⃣ 현재 Pod 상태 확인

먼저 nginx Pod가 실행 중이라고 가정한다.

kubectl get po nginx

출력 예시:

NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          3m

RESTARTS 값이 현재 재시작 횟수다.


2️⃣ 이미지 변경

nginx 이미지를 1.24.0 버전으로 변경해보자.

kubectl set image pod/nginx nginx=nginx:1.24.0

명령어 형식:

kubectl set image POD/이름 컨테이너이름=이미지:태그

3️⃣ 이벤트 확인

이미지 변경 후 다음 명령어로 상세 정보를 확인한다.

kubectl describe po nginx

하단 Events 부분에 다음과 같은 로그가 나타난다.

Normal  Killing   Container definition changed, will be restarted
Normal  Pulling   Pulling image "nginx:1.24.0"
Normal  Pulled    Successfully pulled image
Normal  Created   Created container
Normal  Started   Started container

이 로그는 다음을 의미한다:

  • 기존 컨테이너 종료
  • 새 이미지 다운로드
  • 새 컨테이너 생성 및 시작

4️⃣ RESTARTS 증가 확인

실시간으로 변화를 확인하려면:

kubectl get po nginx -w

잠시 후 RESTARTS 값이 증가한다.

NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   1          4m

이 값은 컨테이너 재시작 횟수를 의미한다.


📌 이미지 변경 확인 방법

현재 사용 중인 이미지를 직접 확인할 수도 있다.

kubectl get po nginx -o jsonpath='{.spec.containers[].image}{"\n"}'

출력 예:

nginx:1.24.0

🔍 동작 원리 정리

이미지를 변경하면 Kubernetes는 다음 순서로 동작한다.

  1. Pod의 스펙 변경 감지
  2. kubelet이 기존 컨테이너 종료
  3. 새로운 이미지 Pull
  4. 새 컨테이너 생성
  5. RESTARTS 값 증가

Pod는 그대로 유지되고, 내부 컨테이너만 교체된다.


⚙ 운영에서 알아둘 점

이번 실습은 단일 Pod 기준이다.

운영 환경에서는 보통:

  • Deployment
  • StatefulSet

을 사용한다.

이 경우에는 컨트롤러가 새로운 Pod를 생성하여 점진적으로 교체하는 방식으로 동작한다.

Standalone Pod와는 동작 방식이 다르다.


🏁 정리

Pod의 이미지를 변경하면:

  • 컨테이너가 종료되고
  • 새 이미지가 Pull되며
  • 컨테이너가 재생성되고
  • RESTARTS 값이 증가한다.

이 과정을 이해하면
컨테이너 재시작 로그 분석이나 운영 중 장애 대응 시 도움이 된다.