dh_0e

[Cloud] Pod(Application) Update 종류 및 실습 본문

Cloud/Kubernetes

[Cloud] Pod(Application) Update 종류 및 실습

dh_0e 2026. 6. 3. 18:14

무중단 Update 종류

  • Blue Green Update: 구버전(Blue)신버전(Green)을 나란히 배포하고 신버전으로 일제히 전환하는 방법
  • Canary Update: 지정한 서버 혹은 특정 사용자에게만 새로운 버전으로 업데이트를 시켰다가 정상적인 동작을 확인한 후에 전체를 업데이트하는 방법
  • Rolling Update: 전체를 무중단으로 업데이트하는 방법
    • 새로운 이미지의 컨테이너가 배포된 Pod는 점진적으로 추가
    • 이전 이미지의 컨테이너가 배포된 Pod는 점진적으로 삭제

 

Blue Green Update

구버전(Blue)과 신버전(Green)

  • Load Balancer: 트래픽 분산 처리기
  • 장점: 빠른 Rollback(예전 버전으로 돌아가는 것)이 가능하며 버전관리가 용이
  • 단점: 시스템 자원이 두 배로 필요
    • 옛날 버전을 얼마나 붙들고 있는지가 중요
      ex) 에러 나면 롤백해야 되기 때문에, 근데 그냥 갖고 있기는 비용이 나감

실습 예시

  • Endpoints 구성 방식을 확인
    • 실제 최종 End Pod의 IP 주소가 나와있음

  • Node 껐다 켜면 IP 주소 바뀜 
    • Controller manager가 바꿔줌

 


 

Canary Update

  • 소수의 사용자(10%)만 장애를 느낄 수 있음
    • 로드 밸런서 기능을 설정하여 관리자만 10%로 빠지게 만들 수 있음
  • 장점
    • 위험을 빠르게 감지할 수 있는 배포전략
    • 트래픽 일부를 신버전으로 분산하여 오류 확인이 가능

실습 예시

 


 

Rolling Update

  • 무중단 배포 방식: 서비스 접속자의 연결을 끊지 않고, 구 버전 Pod를 하나씩 죽이면서 동시에 새 버전 Pod를 띄워 자연스럽게 교체하는 k8s의 기본 업데이트 전략
  • 배포 조건: Deployment의 Pod 템플릿 정보가 변경될 때 자동으로 트리거 됨
    • 가장 흔한 사례: 컨테이너의 이미지 버전을 변경할 때
// 이미지 버전을 nginx:1.19로 바꾸면 롤링 업데이트가 즉시 시작됨
kubectl set image deployment/my-app my-app=nginx:1.19
  • 업데이트 상태 제어: 롤링 업데이트는 진행 속도나 상태를 명령어로 직접 제어 가능
    • 잠깐 멈춤(Pause): 업데이트를 진행하다가 새 버전에 에러가 발생하는 등의 이유로 Pod 교체를 멈춰야 할 때 사용
    • 다시 시작(Resume): 문제없음을 확인하고 남은 Pod들도 마저 교체하라고 명령할 때 사용
    • 이전으로 되돌리기(Undo): 새 버전에 심각한 버그가 있어서 아예 업데이트 전의 구 버전으로 롤백할 때 사용
kubectl rollout pause deployment/my-app		// Pause
kubectl rollout resume deployment/my-app 	// Resume
kubectl rollout undo deployment/my-app 		// Undo

Rolling Update Scenario

Rolling Update Scenario 1/2
Rolling Update Scenario 3/4 시

Rolling Update 실습 예시

 

Rolling Back 실습 예시