Kubernetes 의 Rolling Update 는 "무중단 배포(Zero Downtime Deployment)" 를 목포료 한 방식
kubernetes 의 Deployment 는 Pod 를 한 번에 다 죽이지 않고, 하나씩 새로 만들고, 기존 것을 하나씩 없애는 방식
📄 해당 부분을 제어하는 설정
Default 값
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
➡️ 이 값들을 잘 조절하면, 서비스가 항상 최소한 1개 이상은 살아있는 상태 유지 = 무중단 배포
| 조건 | 이유 |
|---|---|
| 새 컨테이너가 빨리 살아나야 함 | 늦게 뜨면 잠깐 중단될 수 있음 |
| readinessProbe 설정 있음 | 새 Pod 가 "완전히 준비된 후" 부터 트래픽 받도록 하기 위함 |
| Service 가 레디 상태만 연결 | readinessProbe 안 쓰면 준비 안 된 Pod 에도 연결될 수 있음 |
| 데이터베이스나 외부 서비스 연결 끊김 없음 | 배포 중 세션이나 커넥션이 끊기지 않아야 함 |
⭐️ readinessProbe 설정 예시
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
🔍 readinessProbe 란?
| 항목 | 의미 |
|---|---|
| httpGet.path | 어떤 경로로 헬스 체크를 할지 (예:/health) |
| httpGet.port | 체크를 수행할 포트(컨테이너 내부 포트) |
| initialDelaySeconds: 5 | Pod 가 시작된 후 5초 기다리고 헬스 체크 시작 |
| periodSeconds: 10 | 헬스 체크를 10초마다 한 번씩 수행 |
| 종류 | 목적 | 연결 조건 | 중단 조건 |
|---|---|---|---|
| readinessProbe | 준비 여부 확인 | 이걸 통과해야 Service 에 연결됨 | 실패하면 Service 에서 제거됨 |
| livenessProbe | 살아있는지 확인 | 통과 여부와 관계없이 연결됨 | 실패하면 Pod 재시작 됨 |