CKA 30제 07: Rolling Update & Roll Back

주영·2023년 10월 29일
0

CKA 30제

목록 보기
7/7
post-thumbnail

본 게시물은 [따배씨] 07. Rolling Update & Roll Back 영상을 참고하여 작성한 글입니다.

이론

  • Rolling Update : 서비스를 중단하지 않고 업데이트하는 것
  • 운영되고 있는 어플리케이션을 서비스 중단 없이 Update, Rollback 할 수 있어야 하는데 k8s에서는 Deployment 안에서 지원해주고 있음

문제

작업 클러스터: k8s

  • Create a deployment as follows:
  • TASK:
    • name : nginx-app
    • Using container nginx with version 1.11.10-alpine
    • The deployment should contain 3 replicas
  • Next, deploy the application with new version 1.11.13-alpine, by performing a rolling update
  • Finally, rollback that update to the previous version 1.11.10-alpine

풀이

0. 컨텍스트 변경

$ kubectl config use-context k8s
Switched to context "k8s".

1. Deployment 생성

$ kubectl create deployment nginx-app --image=nginx:1.11.10-alpine --replicas=3 --dry-run=client -o yaml
$ kubectl create deployment nginx-app --image=nginx:1.11.10-alpine --replicas=3

2. 확인 - Deployment, Pod, ReplicaSet 이름, 이미지 버전

$ kubectl get deployments.apps nginx-app
NAME        READY   UP-TO-DATE   AVAILABLE   AGE
nginx-app   3/3     3            3           9s 

$ kubectl get pod | grep nginx-app
nginx-app-fc7875d8-bhl58   1/1   Running   0   25s
nginx-app-fc7875d8-h4cwd   1/1   Running   0   25s
nginx-app-fc7875d8-wzlgd   1/1   Running   0   25s

// container Image 버전 확인
$ kubectl describe pod nginx-app-fc7875d8-h4cwd
...
Event Message, Container Image에서 Container Image 확인

3. Rolling Update

$ kubectl set image deployment nginx-app nginx=nginx:1.11.13-alpine  --record
deployment.apps/nginx-app image updated

4. Rollout 상태 확인

$ kubectl rollout status deployment nginx-app
deployment "nginx-app" successfully rolled out

5. 확인 - Pod, ReplicaSet 이름, 이미지 버전

// 현재 상태의 pod 확인
- replicaset 변경된 것 확인
$ kubectl get pod | grep nginx-app
nginx-app-bff47cd8c-2cgsq   1/1   Running   0   3m15s
nginx-app-bff47cd8c-7pxxh   1/1   Running   0   3m13s
nginx-app-bff47cd8c-lssr9   1/1   Running   0   3m17s

// container Image 버전 확인
$ kubectl describe pod nginx-app-bff47cd8c-2cgsq
...
Event Message, Container Image에서 Container Image 확인

6. Rollout history 확인

$ kubectl rollout history deployment nginx-app
deployment.apps/nginx-app
// REVISION 숫자가 가장 큰 것이 현재 시점
REVISION   CHANGE-CAUSE
1          <none>
2          kubectl set image deployment nginx-app nginx=nginx=1.11.13-alpine --record=true

7. Rollback to Previous version

$ kubectl rollout undo deployment nginx-app
deployment.apps/nginx-app rolled back

8. Rollback 상태 확인

$ kubectl rollout status deployment nginx-app

9. 확인 - Pod, ReplicaSet 이름, 이미지 버전

$ kubectl get pods | grep nginx-app
nginx-app-fc7875d8-bhl58   1/1   Running   0   27s
nginx-app-fc7875d8-h4cwd   1/1   Running   0   29s
nginx-app-fc7875d8-wzlgd   1/1   Running   0   26s

// container Image 버전 확인
$ kubectl describe pod nginx-app-fc7875d8-h4cwd
...
Event Message, Container Image에서 Container Image 확인

10. Rollout history 확인

$ kubectl rollout history deployment nginx-app
deployment.apps/nginx-app
REVISION   CHANGE-CAUSE
2          kubectl set image deployment nginx-app nginx=nginx=1.11.13-alpine --record=true
3          <none>

0개의 댓글