簡體   English   中英

在 kubernetes(副本、部署和 pod 刪除)中向下/向上擴展/重新啟動應用程序的正確方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM