kubernetes 滾動更新
創建一個app:
kubectl create deployment nginx --image=nginx:1.11
創建service
kubectl expose deployment nginx --port=80 --type=NodePort
擴縮容:
kubectl scale deployment nginx --replicas=5
修改鏡像,滾動更新:
kubectl set image deployment nginx nginx=nginx:1.10
或者
kubectl edit deployment/nginx
查看更新狀態:
kubectl rollout status deployment nginx
終止升級
kubectl rollout pause deployment/nginx
繼續升級
kubectl rollout resume deployment/nginx
回滾
kubectl rollout undo deployment/nginx
回滾到指定版本
kubectl rollout undo deployment/nginx --to-revision=2
查看滾動版本:
kubectl rollout history deployment nginx
查看信息:
kubectl describe deployment/nginx
幾個重要參數說明
maxSurge與maxUnavailable
maxUnavailable: 1 表示滾動升級時允許的最大Unavailable的pod個數
由於replicas為3,則整個升級,pod個數在2-4個之間
terminationGracePeriodSeconds
k8s將會給應用發送SIGTERM信號,可以用來正確、優雅地關閉應用,默認為30秒。
如果需要更優雅地關閉,則可以使用k8s提供的pre-stop lifecycle hook 的配置聲明,將會在發送SIGTERM之前執行。
livenessProbe與readinessProbe
livenessProbe是kubernetes認為該pod是存活的,不存在則需要kill掉,然後再新啟動一個,以達到replicas指定的個數。
其中readinessProbe.initialDelaySeconds可以設置為系統完全啟動起來所需的最少時間,livenessProbe.initialDelaySeconds可以設置為系統完全啟動起來所需的最大時間+若幹秒。
kubernetes 滾動更新