kubernetes kubectl -如何重新启动部署(或所有部署)

kx1ctssn  于 2022-11-21  发布在  Kubernetes
关注(0)|答案(3)|浏览(589)

我们有一个AKS群集,有时我们会遇到需要重新启动部署的问题(例如,缓存数据已更新,我们希望刷新它,或者存在损坏的缓存数据,我们希望刷新)。
我一直使用的方法是将部署扩展到0,然后使用以下命令将其扩展回来:

kubectl scale deployments/<deploymentName> --replicas=0
kubectl scale deployments/<deploymentName> --replicas=1

这是我所期望的,但感觉有点笨拙,这意味着在此过程进行时,我们没有运行任何部署。
哪种方法更好?是针对特定部署还是针对所有部署?

vsnjm48y

vsnjm48y1#

如果您的部署策略为RollingUpdate,则可以删除单元以替换和刷新单元。
关于滚动更新策略:
用户希望应用程序随时可用,而开发人员则希望一天部署几次新版本的应用程序。在Kubernetes中,这是通过滚动更新来实现的。滚动更新通过用新示例增量更新Pod示例,使部署更新在零停机时间的情况下进行。
滚动更新配置:

spec:
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
    type: RollingUpdate

maxSurge指定可在所需Pod数上创建的最大Pod数。
maxUnavailable指定更新过程中不可用的最大Pod数。
删除窗格:

kubectl delete pod <pod-name>

编辑:
此外,您还可以推出部署,这将重新启动Pod,但也会创建部署的新修订版本。
例如:kubectl rollout restart deployments/<deployment-name>

lyr7nygr

lyr7nygr2#

如何重新启动群集中的所有部署(多个命名空间):

kubectl get deployments --all-namespaces | tail +2 | awk '{ cmd=sprintf("kubectl rollout restart deployment -n %s %s", $1, $2) ; system(cmd) }'
hjzp0vay

hjzp0vay3#

如果在新部署中更改了这些值中的任何一个,当前Pod将重新创建/重新启动

  • 注解
  • CPU限制/请求
  • 内存限制/请求

相关问题