[k8s] Deployment

📝 1yangsh·2021년 3월 14일
0

kubernetes

목록 보기
6/12

Deployment

레플리카셋, 포드의 배포, 업데이트 등을 관리

디플로이먼트 생성, 삭제

  • vi 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
  • kubectl apply -f deployment-nginx.yaml

  • 디플로이먼트 삭제

    • kubectl delete deployment my-nginx-deployment
      • 디플로이먼트 삭제 -> 레플리카셋, 포드도 함께 삭제됨
  • yaml파일을 바탕으로 현재 리비전 저장

    • kubectl apply -f deployment-nginx.yaml --record
  • 포드의 이미지를 변경

    • kubectl set image deployment my-nginx-deployment nginx=nginx:1.11 --record
      • nginx 이미지를 1.10->1.11로 변경
  • 리비전 히스토리 확인

    • kubectl rollout history deployment my-nginx-deployment
  1         kubectl apply --filename=deployment-nginx.yaml --record=true
  2         kubectl set image deployment my-nginx-deployment nginx=nginx:1.11 --record=true
  
  • 해당 리비전(revision=2)의 히스토리 확인

    • kubectl rollout history deployment my-nginx-deployment --revision=2
  • 마지막 리비전 히스토리의 comment 변경

    • kubectl annotate deployment/my-nginx-deployment kubernetes.io/change-cause="<comment>"
  • 특정 리비전으로 롤백

    • kubectl rollout undo deployment my-nginx-deployment --to-revision=1
  • 이전 리비전으로 롤백

    • kubectl rollout undo deployment my-nginx-deployment

참고

  1. 단순히 replicaset 값을 달리해서 pod의 개수만 바뀐다면 리비전이 갱신되지 않는다.
  2. 컨테이너 정보를 수정한다면 기존에 있었던 레플리카셋이 삭제되고 새로운 레플리카셋이 갱신되고 리비전이 새로 생성된다.
profile
개발 경험 저장소

0개의 댓글