K8s 의 무중단배포(Zero Downtime)

Yuno·2025년 4월 3일

쿠버네티스 K8s

목록 보기
4/7

Kubernetes 의 Rolling Update 는 "무중단 배포(Zero Downtime Deployment)" 를 목포료 한 방식

🚀 롤링 업데이트 = 무중단 배포

kubernetes 의 Deployment 는 Pod 를 한 번에 다 죽이지 않고, 하나씩 새로 만들고, 기존 것을 하나씩 없애는 방식


📄 해당 부분을 제어하는 설정
Default 값

spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  • maxUnavailable: 25% 👉 동시에 몇 개까지 죽여도 되는지
  • maxSurge: 25% 👉 동시에 몇 개까지 더 만들어도 되는지

➡️ 이 값들을 잘 조절하면, 서비스가 항상 최소한 1개 이상은 살아있는 상태 유지 = 무중단 배포


❗️ 해당 조건들이 만족되면 100% 무중단 배포 보장됨

조건이유
새 컨테이너가 빨리 살아나야 함늦게 뜨면 잠깐 중단될 수 있음
readinessProbe 설정 있음새 Pod 가 "완전히 준비된 후" 부터 트래픽 받도록 하기 위함
Service 가 레디 상태만 연결readinessProbe 안 쓰면 준비 안 된 Pod 에도 연결될 수 있음
데이터베이스나 외부 서비스 연결 끊김 없음배포 중 세션이나 커넥션이 끊기지 않아야 함

⭐️ readinessProbe 설정 예시

readinessProbe:
  httpGet:
    path: /health
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10

🔍 readinessProbe 란?

  • 이 Pod 가 요청을 받을 준비가 되었는지 를 확인하는 체크 로직
항목의미
httpGet.path어떤 경로로 헬스 체크를 할지 (예:/health)
httpGet.port체크를 수행할 포트(컨테이너 내부 포트)
initialDelaySeconds: 5Pod 가 시작된 후 5초 기다리고 헬스 체크 시작
periodSeconds: 10헬스 체크를 10초마다 한 번씩 수행

💡 readinessProde VS livenessProbe

종류목적연결 조건중단 조건
readinessProbe준비 여부 확인이걸 통과해야 Service 에 연결됨실패하면 Service 에서 제거됨
livenessProbe살아있는지 확인통과 여부와 관계없이 연결됨실패하면 Pod 재시작 됨
profile
Hello World

0개의 댓글