본문 바로가기
software engineering/k8s

Deployments - Deployment status

by _블로그 2021. 2. 10.

Deployment status

Deployment는 progressing, complete, fail to progress 3가지 lifecycle을 가짐.

 

Progressing Deployment

progressing lifecycle에서 아래 tasks를 수행. rs 교체.

  • 새로운 ReplicaSet 생성
  • 새로운 rs에 scale up
  • 이전 rs에 scale down
  • 새로운 Pods가 최소 준비 시간동안 준비되어 이용 가능해짐

Complete Deployment

k8s는 Deployment가 아래 상태일 때 complete lifecycle로 본다.

  • 요청한 update가 모두 적용
  • 모든 replicas가 이용 가능
  • running 중인 old replicas가 없음

kubectl rollout status로 현재 상태 확인 가능한데, complete는 zero exit code(0)를 리턴한다.

> kubectl rollout
> echo $?
0

Failed Deployment

아래 이유들로 Deployment가 실패할 수 있음.

  • 부족한 quota
  • Readiness probe 실패
  • Image pull 에러
  • 권한 부족
  • limit 제한
  • 런타임 설정 오류

.spec.progressDeadlineSeconds 이후에도 성공하지 못하면 .status.conditions에 다음 값을 설정하며 이후 별 다른 액션을 취하진 않으므로 이 값을 보고 롤백 등을 할 것인지 사용자가 정해야 한다.

  • Type=Progressing
  • Status=False
  • Reason=ProgressDeadlineExceeded

quota 부족으로 실패했었는데 quota가 충족된 것 같은 케이스에서는 rollout이 성공되고 난 후 Status가 성공으로 다시 업데이트된다.

Operating on a failed deployment

complete Deployment에 할 수 있는 롤백, scale up/down, pause 등을 failed Deployment에도 동일하게 할 수 있음.

LIST

댓글