k8s

CKA 준비 (7) Rolling Update & Roll Back

Joon0464 2022. 5. 30. 21:30

이 게시물은 아래 강의를 참고 하였습니다.
참고 강의 https://www.youtube.com/watch?v=KdATmTulf7s&list=PLApuRlvrZKojqx9-wIvWP3MPtgy2B372f&index=1 

 

 

문제)

작업 클러스터: 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

 

이론)

Rolling upate -> 서비스 중단 없이 업데이트 제공

ex) 

3개의 1.0 버전의 앱이 3개의 파드에서 동작중 일 때 1.1 버전으로 업데이트를 진행하면, 

1.1 버전의 pod가 생성되어 running 상태가 되면 기존의 1.0 버전의 앱을 동작시키고 있는 pod 하나를 제거한다.

1.1 버전의 pod 또 하나가 새로 생성되어 running 상태가 되면 기존 1.0 버전의 pod를 또 하나 제거한다.

마지막으로 새로운 pod가 생성되어 running 상태가 되면 기존 1.0 버전의 pod는 모두 제거된다.

풀이)

검색 키워드: rolling update -> Deployments | Kubernetes

- Context 변경

$ sudo kubectl config use-context k8s

- Deployment 생성

$ sudo kubectl create deployment nginx-app --image=nginx:1.11.10-alpine --replicas=3

Deployment 생성 확인
Pod 생성 확인

- Rolling update 하기

https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#updating-a-deployment 

에서 명령어 확인

$ sudo kubectl set image deployment nginx-app nginx=nginx:1.11.13-alpine --record

sudo kubectl set image deployment nginx-app nginx=nginx:1.11.13-alpine --record

nginx -> 버전 업데이트를 진행할 컨테이너의 이름이다.

--record -> 실제 운영환경에서 업데이트되는 레코드를 보기 위해 사용하는 옵션이다.

kubectl describe deployments.apps nginx-app 에서 컨테이너 이름 확인 가능
Rolling update를 수행하면 위와 같이 업데이트가 진행된다.

$ sudo kubectl rollout status deployment nginx-app

위 명령어로 업데이트 진행 상태 확인 가능하다.

 

- Update 내역 확인하기

$ sudo kubectl rollout history deployment nginx-app

 

- Rollback 하기

$ sudo kubectl rollout undo deployment nginx-app

Rollback 된 상태를 확인할 수 있다.