[kubenetes] 5. 디플로이먼트

kubenetes
Author
chan2slo chan2slo
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