Kubernetes 中的 HPA 和 ReplicaSet 是什么关系?

ely*_*ver 17 kubernetes

我似乎找不到这个问题的答案,但是 HPA 和 ReplicaSet 之间有什么关系?据我所知,我们定义了一个 Deployment 对象,它定义了创建 RS 的副本,RS 负责监督我们的 Pod 并进行扩展和缩减。

HPA 在这张图中处于什么位置?它是否覆盖 Deployment 对象?当您在部署对象的清单中定义副本数量时,我有点困惑。

谢谢你!

Sah*_*ain 27

当我们创建部署时,它会创建一个副本集和 Pod 数量(我们在 中给出replicas)。部署控制 RS,RS 控制 pod。现在,HPA 是另一个抽象,它提供部署指令,并通过 RS 确保 Pod 满足各自的扩展要求。

截至 k8s 文档:Horizo​​ntal Pod Autoscaler 根据观察到的 CPU 利用率(或者,通过自定义指标支持,根据其他应用程序提供的指标)自动缩放复制控制器、部署、副本集或有状态集中的 Pod 数量。请注意,Horizo​​ntal Pod Autoscaling 不适用于无法缩放的对象,例如 DaemonSets。

一个简短的高级概述是:基本上都是关于控制器的。每个 k8s 对象都有一个控制器,当创建部署对象时,相应的控制器会创建 rs 和关联的 pod,rs 控制 pod,部署控制 rs。另一方面,当 hpa 控制器发现 pod 数量随时高于/低于预期时,它就会与部署进行对话。

阅读 k8s文档了解更多内容

  • “如果您计划将 HPA 与 Deployment 或 StatefulSet 一起使用,请不要声明副本。如果这样做,每次滚动更新都会暂时取消 HPA 的效果。仅为不与HPA。” - https://technologyconversations.com/2018/10/10/to-replicas-or-not-to-replicas-in-kubernetes-deployments-and-statefulsets/ (9认同)
  • 如果您将 HPA 设置为最小值 5 和最大值 10,并且在 yaml 清单中指定replicas=2,那么首先它将创建 2 个副本,然后当它看到您的 HPA 最小值为 5 时,它将扩展并再添加 3 个副本使其至少为 5。首先,您的清单将被应用,然后 HPA 将受到尊重。 (8认同)