[英]How to implement Kubernetes horizontal pod autoscaling with scale up/down policies?
[英]Correct way to scale/restart an application down/up in kubernetes (replicaset, deployments and pod deletion)?
我通常通過以下方式重新啟動我的應用程序:
kubectl scale deployment my-app --replicas=0
其次是:
kubectl scale deployment my-app --replicas=1
效果很好。 我還有另一個正在運行的應用程序,但是當我查看它的副本集時,我看到:
$ kubectl get rs
NAME DESIRED CURRENT READY AGE
another-app 2 2 2 2d
因此,要正確重新啟動,我當然需要:
kubectl scale deployment another-app --replicas=0
kubectl scale deployment another-app --replicas=2
但是有沒有更好的方法來做到這一點,所以我不必在縮放/重新啟動我的應用程序(可能有replicas > 1
)之前手動查看副本集?
您可以使用 level 重新啟動 pod
kubectl delete pods -l name=myLabel
您可以滾動重啟部署的所有 pod,這樣您就不會關閉服務
kubectl patch deployment your_deployment_name -p \
"{\"spec\":{\"template\":{\"metadata\":{\"annotations\":{\"date\":\"`date +'%s'`\"}}}}}"
而kubernetes 1.15版之后就可以
kubectl rollout restart deployment your_deployment_name
要更改當前部署,您可以使用kubectl rollout pause deployment/YOUR_DEPLOYMENT
。 這樣,部署將被標記為暫停,並且不會被 controller 協調。 暫停后,您可以對配置進行必要的更改,然后使用kubectl rollout resume deployment/YOUR_DEPLOYMENT
恢復它。 這樣,它將創建一個具有更新配置的新replicaset
。
新配置的 Pod 將被啟動,當它處於running
狀態時,舊配置的 Pod 將被終止。
使用此方法,您將能夠使用以下方法將部署部署到以前的版本:
kubectl rollout history deployment/YOUR_DEPLOYMENT
檢查推出的歷史記錄,然后執行以下命令進行回滾:
kubectl rollout undo deployment/YOUR_DEPLOYMENT --to-revision=REVISION_NO
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.