코딩과로그
[기록용] 쿠버네틱스 상태 변경 관련 명령어 (rollout) 본문
만약 잘못된 이미지로 변경했을 때에 어떻게 해야될까?
# 없는 이미지로 변경 시도 (sororiri/simple-node-app:4 이라는 이미지는 존재하지 않음)
# kubectl set image deployment/{dep_id} {container_id}={image_id}
$ kubectl set image deployment/first-dep simple-node-app=sororiri/simple-node-app:4
deployment.apps/first-dep image updated
# 포드의 상태(ImagePullBackOff)를 보니 Pull 에 실패한 것을 확인할 수 있다.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
first-dep-6d5f979bc5-cxsjm 0/1 ImagePullBackOff 0 24s
first-dep-cdd8bf9f7-h94qm 1/1 Running 0 36m
# 변경 상태를 확인해보니 지금 실패해서 계속 pending되고 있다.
$ kubectl rollout status deployment/first-dep
Waiting for deployment "first-dep" rollout to finish: 1 old replicas are pending termination...
^C
# 변경을 취소했다.
$ kubectl rollout undo deployment/first-dep
deployment.apps/first-dep rolled back
# 변경 상태를 보니 다시 undo가 정상적으로 되었음을 확인할 수 있다.
$ kubectl rollout status deployment/first-dep
deployment "first-dep" successfully rolled out
특정 revison 으로 이동하고 싶으면 어떻게 해야될까?
# dep의 히스토리를 본다.
$ kubectl rollout history deployment/first-dep
deployment.apps/first-dep
REVISION CHANGE-CAUSE
2 <none>
3 <none>
# revision 2를 확인해보았다.
# 내가 이동하고 싶은 이미지가 "sororiri/simple-node-app:4" 였다고 가정해보면 아래에 내가 원하는 이미지가 있는 것을 확인할 수 있다.
$ kubectl rollout history deployment/first-dep --revision=2
deployment.apps/first-dep with revision #2
Pod Template:
Labels: app=first-dep
...
Image: sororiri/simple-node-app:4
...
# 원하는 revision으로 이동하는 명령어
# kubectl rollout undo deployment/{dep_id} --to-revision={revison_id}
$ kubectl rollout undo deployment/first-dep --to-revision=2
이것저것 삭제 명령어
# 현재 service
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
first-dep LoadBalancer 10.103.89.233 <pending> 8080:30367/TCP 53m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 65m
# first-dep 서비스 삭제
$ kubectl delete service first-dep
service "first-dep" deleted
# first-dep 배포 객체 삭제
$ kubectl delete deployment first-dep
deployment.apps "first-dep" deleted
# 서비스가 삭제되었음을 확인
❯ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 66m
# 서비스가 배포 객체가 삭제되었음을 확인
❯ kubectl get deployments
No resources found in default namespace.
'쿠버네틱스' 카테고리의 다른 글
[기록용] label 를 활용한 특정 객체 선택 및 삭제 (0) | 2023.04.11 |
---|---|
[기록용] 선언형과 명령형 (declarative, imperative) (0) | 2023.04.11 |
[기록용] 쿠버네틱스 구성요소 - Service (1) | 2023.04.10 |
[기록용] 쿠버네틱스 deploy하는 방법 (0) | 2023.04.10 |
[기록용] 쿠버네틱스 구성요소 (Pod, Deploy) (0) | 2023.04.10 |