繁体   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