【问题标题】:kubectl - How to restart a deployment (or all deployment)kubectl - 如何重新启动部署(或所有部署)
【发布时间】:2021-01-24 00:16:30
【问题描述】:

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

我一直在使用将部署缩放到 0 的方法,然后使用以下命令将其重新缩放:

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

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

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

【问题讨论】:

  • 假设您不想实际进行新部署,我认为这是正确的方法。你当然不想随意删除部署,因为你可能会丢失一些重要的东西,比如 PVC。如果有什么我想说的“黑客”感觉可能来自图像上的最新标签......
  • 在当前的Kubernetes上,你可以kubectl rollout restart deployment ...

标签: kubernetes azure-aks


【解决方案1】:

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

关于 RollingUpdate 策略:

用户希望应用程序始终可用,而开发人员 预计每天会多次部署它们的新版本。在 Kubernetes 这是通过滚动更新完成的。滚动更新允许 部署更新以增量方式进行,停机时间为零 用新实例更新 Pod 实例。

滚动更新配置:

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

maxSurge 指定在所需 Pod 数量上可以创建的最大 Pod 数量。

maxUnavailable 指定更新过程中不可用的 Pod 的最大数量。

删除 pod:

kubectl delete pod <pod-name>

编辑:

此外,您可以推出部署,这将重新启动 pod,但也会创建部署的新修订版。

例如:kubectl rollout restart deployments/&lt;deployment-name&gt;

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多