kubernetes - kubectl - 如何重新启动部署(或所有部署)
问题描述
我们有一个 AKS 集群,有时我们最终会遇到需要重新启动部署的问题(例如,缓存数据已更新,我们想要刷新它,或者我们想要刷新的缓存数据损坏)。
我一直在使用将部署扩展到 0 的方法,然后使用以下命令将其扩展:
kubectl scale deployments/<deploymentName> --replicas=0
kubectl scale deployments/<deploymentName> --replicas=1
这符合我的预期,但感觉很hacky,这意味着在此过程发生时我们没有运行任何部署。
有什么更好的方法来做到这一点?对于特定部署和所有部署?
解决方案
如果您有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>
推荐阅读
- swagger-2.0 - What is the difference between enum and example in OpenAPI (Swagger)?
- scala - ERROR: java.lang.IllegalStateException: User did not initialize spark context
- matplotlib - How to plot a circle with a varying radius in each quadrant?
- algorithm - 如何良好有效地计算多个间隔之间的总重叠?
- java - 在 repl.it 上反转 java 中的字符串
- ruby - Is there a way to get the `jid` inside a `sidekiq_retry_in` block?
- python - 在 Qt5 运行时替换小部件
- python - 无法在 Ubuntu 的 Python 环境中运行 Jupyter Notebook
- pyspark - pyspark 用一些与最后一个非空值相关的计算替换空值
- json - jq:从空手道 surfire-reports 转换 json 结果获得更简单的步骤状态