[kubenetes] 5. 디플로이먼트
kubenetes
Author
Date
2022-07-25 21:24
Views
1278
디플로이먼트 생성
root@Kube-master1:~# cat deployment-nginx.yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx-deployment spec: replicas: 3 selector: matchLabels: app: my-nginx template: metadata: name: my-nginx-pod labels: app: my-nginx spec: containers: - name: nginx image: nginx:1.10 ports: - containerPort: 80 root@Kube-master1:~# kubectl apply -f deployment-nginx.yaml deployment.apps/my-nginx-deployment created
디플로이먼트를 생성하면, 레플리카셋, 포드가 다 생성된다.
root@Kube-master1:~# kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE my-nginx-deployment 3/3 3 3 2m39s root@Kube-master1:~# kubectl get replicaset NAME DESIRED CURRENT READY AGE my-nginx-deployment-7484748b57 3 3 3 2m55s root@Kube-master1:~# kubectl get po NAME READY STATUS RESTARTS AGE my-nginx-deployment-7484748b57-227kz 1/1 Running 0 3m3s my-nginx-deployment-7484748b57-l7zd5 1/1 Running 0 3m3s my-nginx-deployment-7484748b57-rdpdm 1/1 Running 0 3m3s
디플로이먼트를 사용하는이유
디플로이먼트는 배포와 롤백을 돕는다.
기존 디플로이먼트 삭제후 재생성, 생성시 --record옵션
root@Kube-master1:~# kubectl delete deploy my-nginx-deployment deployment.apps "my-nginx-deployment" deleted root@Kube-master1:~# kubectl apply -f deployment-nginx.yaml --record deployment.apps/my-nginx-deployment created
다음의 명령으로 nginx1.11 버전으로 업데이트 진행 yaml파일 수정후 다시 apply한것과 같은효과
그러나 해시값이 바뀌었다. 기존것은 삭제하지 않고 새로운 deploy가 생성됨
root@Kube-master1:~# kubectl set image deployment my-nginx-deployment nginx=nginx1.11 --record deployment.apps/my-nginx-deployment image updated root@Kube-master1:~# kubectl get rs NAME DESIRED CURRENT READY AGE my-nginx-deployment-556b57945d 3 3 3 31s my-nginx-deployment-7484748b57 0 0 0 41s
다음의 명령으로 업테이트 상황을 알수있음
root@Kube-master1:~# kubectl rollout history deploy my-nginx-deployment deployment.apps/my-nginx-deployment REVISION CHANGE-CAUSE 1 kubectl apply --filename=deployment-nginx.yaml --record=true 2 kubectl set image deployment my-nginx-deployment nginx=nginx:1.11 --record=true
기존으로 롤백
root@Kube-master1:~# kubectl rollout undo deploy my-nginx-deployment --to-revision=1 deployment.apps/my-nginx-deployment rolled back root@Kube-master1:~# kubectl get rs NAME DESIRED CURRENT READY AGE my-nginx-deployment-556b57945d 0 0 0 88s my-nginx-deployment-7484748b57 3 3 3 98s
모든 리소스 한번에 삭제
root@Kube-master1:~# kubectl delete deploy,rs,po --all deployment.apps "my-nginx-deployment" deleted replicaset.apps "my-nginx-deployment-556b57945d" deleted pod "my-nginx-deployment-7484748b57-n528f" deleted pod "my-nginx-deployment-7484748b57-tgphq" deleted pod "my-nginx-deployment-7484748b57-x4pb2" deleted
Total Reply 0