首页 > 解决方案 > kubectl - 如何重新启动部署(或所有部署)

问题描述

我们有一个 AKS 集群,有时我们最终会遇到需要重新启动部署的问题(例如,缓存数据已更新,我们想要刷新它,或者我们想要刷新的缓存数据损坏)。

我一直在使用将部署扩展到 0 的方法,然后使用以下命令将其扩展:

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

这符合我的预期,但感觉很hacky,这意味着在此过程发生时我们没有运行任何部署。

有什么更好的方法来做到这一点?对于特定部署和所有部署?

标签: kubernetesazure-aks

解决方案


如果您有RollingUpdate部署策略,则可以删除 pod 以替换 pod 并刷新它。

关于 RollingUpdate 策略:

用户希望应用程序始终可用,并且开发人员希望每天多次部署它们的新版本。在 Kubernetes 中,这是通过滚动更新完成的。滚动更新通过使用新的 Pod 实例增量更新 Pod 实例,允许 Deployments 的更新在零停机时间的情况下进行。

滚动更新配置:

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>


推荐阅读