2

在 Helm 图表中创建DeploymentHorizontalPodAutoscaler一起时,部署.spec.replicas应该设置为null,还是应该取消设置,或者应该设置为 hpaminReplicas和之间的某个值maxReplicas

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

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

helm upgrade在不改变其扩展性的情况下,部署其他字段的正确方法是什么?

4

1 回答 1

1

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

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

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

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


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

@tianchengli对此添加了评论。

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

于 2020-11-19T11:04:07.097 回答