레플리카셋, 포드의 배포, 업데이트 등을 관리
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
리비전 히스토리 확인
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
- 단순히 replicaset 값을 달리해서 pod의 개수만 바뀐다면 리비전이 갱신되지 않는다.
- 컨테이너 정보를 수정한다면 기존에 있었던 레플리카셋이 삭제되고 새로운 레플리카셋이 갱신되고 리비전이 새로 생성된다.