Post

데브코스 TIL - 쿠버네티스 포드 업데이트와 복구

쿠버네티스 포드 업데이트와 복구

제공된 실습파일을 사용하여 서비스 운용해보기

1. 디렉토리 안에 해당 파일들 넣어두기

  • service.yaml
  • rollout.yaml

2. 매니페스트 사용해서 delpoyment 만들기

1
2
3
kubectl apply -f rollout.yaml

deployment.apps/dpy-nginx created
1
2
3
4
kubectl get deploy

NAME        READY   UP-TO-DATE   AVAILABLE   AGE
dpy-nginx   0/3     3            0           11s

3. 매니페스트 사용해서 서비스 만들기

1
2
3
kubectl apply -f server.yaml

service/svc-nginx created
1
2
3
4
5
kubectl get svc

NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.96.0.1        <none>        443/TCP        8d
svc-nginx       NodePort    10.105.181.193   <none>        80:30000/TCP   4s

4. dpy-nginx 컨테이너의 이미지 버전 수정하기

1
2
3
kubectl set image deployment dpy-nginx nginx=nginx:1.17.0

deployment.apps/dpy-nginx image updated

5. annotate를 사용해서 변경 사항(내역) 작성하기

1
2
3
kubectl annotate deployment dpy-nginx kubernetes.io/change-cause="update nginx image from 1.16.0 to 1.17.0"

deployment.apps/dpy-nginx annotated

6. 작업 내역 확인하기

1
2
3
4
5
6
kubectl rollout history deployment dpy-nginx

deployment.apps/dpy-nginx
REVISION  CHANGE-CAUSE
1         <none>
2         update nginx image from 1.16.0 to 1.17.0

오류

1. 없는 이미지 버전을 사용하여 오류 만들기

1
2
3
kubectl set image deployment dpy-nginx nginx=nginx:1.18.30

deployment.apps/dpy-nginx image updated

2. annotate를 사용해서 변경 사항(내역) 작성하기

1
2
 kubectl annotate deployment dpy-nginx kubernetes.io/change-cause="update nginx image from 1.17.0 to 1.18.30"
deployment.apps/dpy-nginx annotated

3. 작업 내역 확인하기

1
2
3
4
5
6
7
kubectl rollout history deployment dpy-nginx

deployment.apps/dpy-nginx
REVISION  CHANGE-CAUSE
1         <none>
2         update nginx image from 1.16.0 to 1.17.0
3         update nginx image from 1.17.0 to 1.18.30

4. 포드 목록 확인

이미지를 가져오는 것에 실패한 상태인 것을 확인할 수 있음 (대기중인 상태)

1
2
3
4
5
6
7
kubectl get pods

NAME                         READY   STATUS             RESTARTS   AGE
dpy-nginx-5b44449cdc-8kzxd   0/1     ImagePullBackOff   0          3m16s
dpy-nginx-858d7bb5b9-cj4kq   1/1     Running            0          13m
dpy-nginx-858d7bb5b9-ncnf8   1/1     Running            0          13m
dpy-nginx-858d7bb5b9-zk6mk   1/1     Running            0          13m

5. rollback 하기

1
2
3
kubectl rollout undo deployment dpy-nginx

deployment.apps/dpy-nginx rolled back
1
2
3
4
5
6
kubectl get pods

NAME                         READY   STATUS    RESTARTS   AGE
dpy-nginx-858d7bb5b9-cj4kq   1/1     Running   0          16m
dpy-nginx-858d7bb5b9-ncnf8   1/1     Running   0          16m
dpy-nginx-858d7bb5b9-zk6mk   1/1     Running   0          16m

6. 작업 내역 확인하기

작업 내역을 확인하면 4번이 추가된 것을 볼 수 있다 (원래 상태로 복구)

1
2
3
4
5
6
7
kubectl rollout history deployment dpy-nginx

deployment.apps/dpy-nginx
REVISION  CHANGE-CAUSE
1         <none>
3         update nginx image from 1.17.0 to 1.18.30
4         update nginx image from 1.16.0 to 1.17.0
This post is licensed under CC BY 4.0 by the author.