文章目錄
Deployment是⼀個⽐RS應⽤模式更⼴的API對象,可以是創建⼀個新的服務,更新⼀個新的服務,也可以是滾動升級⼀個服務。滾動升級⼀個服務。
實際是創建⼀個新的RS,然後逐漸將新RS中副本數增加到理想狀態,將舊RS中的副本數減少到0的複合操作;這樣⼀個複合操作⽤⼀個RS是不太好描述的,所以⽤⼀個更通⽤的Deployment來描述。
1.創建Deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3 # 創建副本個數
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: docker.io/nginx:1.7.9
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
protocol: TCP
查看deployments 創建過程
kubectl get deployments -w
2. 更新Deployment
Deployment 的 rollout 當且僅當 Deployment 的 pod template(例如.spec.template
)中的 label
更新或者鏡像更改時被觸發。其他更新,例如擴容 Deployment 不會觸發 rollout。
2.1 使用set image更新
kubectl set image deployment/nginx nginx=nginx:1.9.1
2.2 使用kubectl edit更新
查看rollout 狀態:kubectl rollout status deployment/nginx
3. 暫停/重啓Deployment跟新
暫停:kubectl rollout pause deployment/nginx
重啓:kubectl rollout resume deployment/nginx
【例】:首先暫停deployment/nginx的更新,修改nginx版本號,查看rs發現並沒有更新,此時重啓deployment/nginx的更新,發現升級正常,通常用於升級過程中發現版本有問題,可暫停更新,重新修改鏡像版本,再啓用版本更新
更新nginx版本
重啓nginx版本更新
動態查看rs
4. 回滾Deployment
4.1 查看升級歷史
kubectl rollout history deployment/nginx
查看版本詳細信息
kubectl rollout history deployment/nginx --revision=1
4.2 回滾到上個版本
kubectl rollout undo deployment/nginx
4.3 回滾到指定版本
kubectl rollout undo deployment/nginx --to-revision=1
5 擴容(增加副本數)
kubectl scale deployment nginx --replicas 5