티스토리 뷰

1. 문제: 쿠버네티스 배포 및 롤링 업데이트

1) 요구사항

(1) 어플리케이션 배포

- nginx:1.19 이미지를 사용하는 디플로이먼트 'nginx-deployment', 3개의 레플리카 실행 

(2) 롤링 업데이트 수행 

- nginx의 버전을 1.19에서 1.20으로 업데이트

(3) 롤백수행

- 롤링 업데이트 이후 문제가 발생했다고 가정하고 이전 버전으로 롤백 

2. 해결과정

1) 어플리케이션 배포

kubectl create deployment nginx-deployment --image=nginx:1.19 --replicas=3

 

2) 롤링 업데이트 수행 

(1) 이미지 업데이트 

- kubectl set image명령어를 사용하여 이미지를 변경 

kubectl set image deployment/nginx-deployment nginx=nginx:1.20

deployment "nginx-deployment" successfully rolled out

(2) 결과 확인 

kubectl get deployments
kubectl get pods

NAME                READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment    3/3     3            3           2m

NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-7d8f9c9b8b-jh9k7   1/1     Running   0          30s
nginx-deployment-7d8f9c9b8b-lm4n5   1/1     Running   0          30s
nginx-deployment-7d8f9c9b8b-pq6r8   1/1     Running   0          30s

3) 롤백 수행 

(1) 롤백 실행 

- 문제가 발생했다고 가정하고, 이전 버전(1.19)으로 롤백 

kubectl rollout undo deployment/nginx-deployment

(2) 롤아웃 상태 확인

- 롤백 진행 상황을 모니터링 

kubectl rollout status deployment/nginx-deployment

deployment "nginx-deployment" successfully rolled out

#롤백의 경우 
deployment.apps/nginx-deployment rolled back

4) 롤백 결과 확인("NEW_AGE"인지 확인)

kubectl get deployments
kubectl get pods

NAME                READY    UP-TO-DATE    AVAILABLE    AGE 
nginx-deployment    3/3      3             3            NEW_AGE 

NAME                                READY    STATUS    RESTARTS    AGE 
nginx-deployment-6d4cf56db6-k8jz8    1/1      Running    0         NEW_AGE

3. 롤아웃과 관련한 특수 기능들

1) 특정 리버전으로 롤백

- 이전 바꿨던 다양한 버전들 중에 하나로 롤백이 가능하다. 

(1) record

- --record 옵션을 설정함으로써 rollout history에 기록을한다. 

kubectl set image deployment/nginx-deployment nginx=nginx:nonexistent --record=true

(2) rollout history 확인 

- rollout 기록을 확인하고 원하는 리비전들을 확인한다. 

kubectl rollout history deployment/nginx-deployment

REVISION    CHANGE-CAUSE
1           kubectl create deployment nginx-deployment --image=nginx:1.19 --replicas=3 --record=true 
2           kubectl set image deployment/nginx-deployment nginx=nginx:nonexistent --record=true

(3) 특정 리비전으로 롤백 

kubectl rollout undo deployment/nginx-deployment --to-revision=1

deployment.apps/nginx-deployment rolled back to revision 1
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함