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
'software engineering > k8s' 카테고리의 다른 글
Helm - Developing Templates - Template Functions and Pipelines (0) | 2021.02.17 |
---|---|
Deployments - Writing a Deployment Spec (0) | 2021.02.16 |
Deployments - Pausing and Resuming a Deployment (0) | 2021.02.10 |
Deployments - Scaling a Deployment (0) | 2021.02.10 |
Deployments - Rolling Back a Deployment (0) | 2021.02.10 |
댓글