【问题标题】:How to upgrade a Deployment in Helm without modifying replicas?如何在不修改副本的情况下升级 Helm 中的部署?
【发布时间】:2020-11-09 20:15:18
【问题描述】:

在 Helm 图表中同时创建 DeploymentHorizontalPodAutoscaler 时,应将部署的 .spec.replicas 设置为 null,还是取消设置,或者将其设置为 hpa 的 @ 之间的某个值987654329@和maxReplicas?

当您创建 hpa 时,hpa 控制器会管理部署的 .spec.replicas,因此当您更新部署的其他字段时,您不应更改副本。

kubectl apply 声明式配置相比,如果您在第一次创建部署时未设置.spec.replicas,则可以修改部署的其他字段而无需修改.spec.replicas,因此3-way diff 忽略该字段时该部署将在未来应用。或者要在创建时间之后省略字段,您必须使用kubectl apply edit-last-applied 以避免在删除字段时意外缩小到 1 (kubernetes/kubernetes#67135)。所以使用kubectl apply 可以在不接触.spec.replicas 的情况下应用部署。

helm upgrade 部署的其他字段而不更改其缩放的正确方法是什么?

【问题讨论】:

  • 嗨@yonran,我检查了here,如果我理解正确,有两种方法可以做到这一点。首先是添加here 中提到的 if 语句。其次是简单地完全删除副本字段,然后它应该尊重由 HPA 管理的副本数,有comment 关于它。您能否检查上述 cmets 并告诉我是否回答了您的问题?

标签: kubernetes kubernetes-helm hpa


【解决方案1】:

我检查了here,如果我理解正确,有两种方法可以做到这一点。

1.添加 if 语句作为解决方法。

@naseemkullah 添加了关于它的评论。

所以解决方法是在部署的 spec.replicas 周围添加一个 if 语句,以便在启用 HPA 时不对其进行模板化


2.完全删除replicas字段,那么它应该尊重HPA管理的replicas数。

有@tianchengli添加的comment

如果我完全删除副本字段,它将尊重 HPA 管理的副本数。

【讨论】:

    猜你喜欢
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    相关资源
    最近更新 更多