九.deployment:聲明式的升級應用
9.1.使用RC實現滾動升級
#kubectl rolling-update kubia-v1 kubia-v2 --image=luksa/kubia:v2
使用kubia-v2版本應用來替換運行着kubia-v1的RC,將新的複製控制器命名爲kubia-v2,並使用luksa/kubia:v2最爲鏡像。
9.2.使用Deployment聲明式的升級應用
#kubectl create -f kubectl.depl-v1.yaml --record //--record可以記錄歷史版本 #查看Deployment的相關信息 #kubectl get deployment #kubectl describe deployment #查看部署狀態: #kubectl rollout status deployment kubia
9.3.觸發deployment升級
#kubectl edit deployment kubia //修改完後資源對象會被更新 #kubectl patch deployment kubia -p '{...}' //只能包含想要更新的字段 #kubectl apply -f kubia-deploy-v2.yml //如果yml中定義的資源不存在,會自動被創建 #kubectl replace -f kubia-deploy-v2.yml //如果yml中定義的資源不存在,則會報錯
9.4.回滾deployment
#kubectl rollout status deployment kubia
#kubectl rollout undo deployment kubia
#kubectl rollout history deployment kubia
#kubectl rollout undo deployment kubia --to-revision=1
9.5.控制滾動升級的速率
十:Statefulset:部署有狀態的多副本應用
10.1.什麼是Statefulset
10.2.statefulset的創建
statefulset的創建順序從0到N-1,終止順序則相反,如果需要對satateful擴容,則之前的n個pod必須存在,如果要終止一個pod,則他的後續pod必須全部終止。
創建statefulset
#kubectl create -f ss-nginx.yml
查看statefulset
#kubectl get statefulset
statefulset會使用一個完全一致的pod來替換被刪除的pod。
statefulset擴容和縮容時,都會刪除最高索引的pod,當這個pod完全被刪除後,纔回刪除擁有次高索引的pod。
10.3.statefulset中發現夥伴的節點
通過DNS中SRV互相發現。
10.4.更新statefulset
#kuebctl edit statefulset kubia
但修改後pod不會自動 被更新,需要手動delete pod後會重新調度更新。
10.5.statefulset如何處理節點失效