在 kubernetes 中向下/向上扩展/重新启动应用程序的正确方法(复制集、部署和 Pod 删除)?

u12*_*123 4 kubernetes

我通常通过以下方式重新启动我的应用程序:

kubectl scale deployment my-app --replicas=0
Run Code Online (Sandbox Code Playgroud)

其次是:

kubectl scale deployment my-app --replicas=1
Run Code Online (Sandbox Code Playgroud)

效果很好。我还有另一个正在运行的应用程序,但是当我查看它的副本集时,我看到:

$ kubectl get rs
NAME                                        DESIRED   CURRENT   READY     AGE
another-app                                 2         2         2         2d
Run Code Online (Sandbox Code Playgroud)

因此,要正确重新启动,我当然需要:

kubectl scale deployment another-app --replicas=0
kubectl scale deployment another-app --replicas=2
Run Code Online (Sandbox Code Playgroud)

但是有没有更好的方法来做到这一点,这样我就不必在扩展/重新启动我的应用程序(可能有replicas > 1)之前手动查看复制集?

hoq*_*que 6

您可以使用 level 重新启动 pod

kubectl delete pods -l name=myLabel
Run Code Online (Sandbox Code Playgroud)

您可以滚动重新启动部署的所有 Pod,这样就不会关闭服务

kubectl patch deployment your_deployment_name -p \
  "{\"spec\":{\"template\":{\"metadata\":{\"annotations\":{\"date\":\"`date +'%s'`\"}}}}}"
Run Code Online (Sandbox Code Playgroud)

在 kubernetes 1.15 版本之后你可以

kubectl rollout restart deployment your_deployment_name
Run Code Online (Sandbox Code Playgroud)