我通常通过以下方式重新启动我的应用程序:
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
但是有没有更好的方法来做到这一点,这样我就不必在缩放/重新启动我的应用程序之前手动查看 repliaset(这可能replicas > 1
(?
您可以使用级别重新启动 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
。这样,部署将被标记为已暂停,并且控制器不会协调。暂停后,您可以对配置进行必要的更改,然后使用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