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

标签 kubernetes azure-aks

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

kubectl scale deployments/<deploymentName> --replicas=0
kubectl scale deployments/<deploymentName> --replicas=1
这符合我的预期,但感觉很糟糕,这意味着在此过程发生时我们没有运行任何部署。
这样做的更好方法是什么?对于特定部署和所有部署?

最佳答案

如果您有 RollingUpdate 的策略在您的部署中,您可以删除 pod 以替换 pod 并刷新它。
关于滚动更新策略:

Users expect applications to be available all the time and developers are expected to deploy new versions of them several times a day. In Kubernetes this is done with rolling updates. Rolling updates allow Deployments' update to take place with zero downtime by incrementally updating Pods instances with new ones.


滚动更新配置:
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/<deployment-name>

关于kubernetes - kubectl - 如何重新启动部署(或所有部署),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64271173/

相关文章:

google-compute-engine - 为什么我无法通过其 IP 访问我的 Kubernetes 服务?

azure - AKS 使用 Terraform - 等待完成时出错

c# - 将 key 从 Key Vault 检索到在 AKS 中运行的 .Net Core 应用程序,是否需要 CSI 驱动程序?

kubernetes - 如何强制删除Kubernetes命名空间?

nginx - 如何在 Tectonic kubernetes 设置中禁用 Ingress 对错误的拦截

kubernetes - 从 ConfigMap 读取 Kubernetes CronJob 的调度表达式

kubernetes - pod定义中重复的env变量名称,确定最终值的优先规则是什么?

kubernetes-ingress - SPA 应用程序(Vue、React、Angular)在 Kubernetes 上的 Nginx 入口 Controller 后面无法正常工作

azure - Kubernetes 证书管理器在颁发者更改后不更新证书

azure - 使用查询参数重写 Nginx 入口中的规则或服务器片段