kubernetes - 为什么 Openshift 在滚动部署之前扩展旧部署
问题描述
在我的团队中,我们有时会缩减到 Openshift 中的一个 pod,以使测试更容易。如果我们随后将所需的副本数设置为 2 进行滚动更新,Openshift 会在执行滚动部署之前扩展到两个 pod。这很麻烦,因为新的“旧” pod 可以启动我们不希望在新部署开始之前启动的东西,因此我们必须记住在新部署之前取下一个 pod。
有没有办法阻止旧部署扩大到所需的副本数,而新部署扩大到所需的副本数?另外,为什么它会这样工作?
- OpenShift 大师:v3.11.200
- Kubernetes 大师:v1.11.0+d4cacc0
- OpenShift Web 控制台:3.11.200-1-8a53b1d
从我们的 Openshift 模板:
- apiVersion: v1
kind: DeploymentConfig
spec:
replicas: 2
strategy:
type: Rolling
解决方案
这是使用RollingUpdate
策略时的预期行为。它一个一个地移除旧的 Pod,同时添加新的 Pod,使应用程序在整个过程中保持可用,并确保其处理请求的能力不下降。由于您只有一个 pod,Kubernetes 会zero-downtime
根据清单中的要求扩展部署以保持策略。
它扩展到 2,因为如果未指定,则maxSurge
默认为 25%。这意味着在更新期间,Pod 实例最多可以比所需数量多 25%。
如果您想确保这不会被缩放,您可以将策略更改为Recreate
. 这将导致在创建新 Pod 之前删除所有旧 Pod。当您的应用程序不支持并行运行多个版本并且需要在启动新版本之前完全停止旧版本时,请使用此策略。但是请注意,此策略确实涉及您的应用程序完全不可用的短时间内。
推荐阅读
- r - 编写 R 函数
- flutter - 如何将语言环境属性设置为 TableCalendar 小部件
- security - 在公共 VPN 上通过 SSH 连接到服务器是否安全?
- python - 如何获得 lambda 表达式的规范化形式?
- python - 在 QuantLib 和 Python 中摊销浮动利率债券的定价信用损失
- asp.net - 使用 Azure AD 身份验证在 Blazor 应用程序上获取未配置的回复 URL 错误
- php - PHP 计算变量名
- python - 我可以使用 pandas 的 pivot_table 来聚合缺少值的列吗?
- csv - CSV 文件中 SSIS 上的数值数据溢出
- python - (更新进度)使用 Matplotlib 单选按钮在等高线图之间切换 [Python]