Kubernetes Horizo​​ntal Pod Autoscaler 未利用节点资源

Kubernetes Horizontal Pod Autoscaler not utilising node resources

我目前 运行 Kubernetes 1.9.7 并成功使用 Cluster Autoscaler and multiple Horizontal Pod Autoscalers

但是,我最近开始注意到 HPA 在缩减副本时更倾向于更新 pods。

例如,我在一个节点上有 1 个服务 A 运行 的副本以及其他几个服务。该节点有大量可用资源。在加载期间,服务 A 的目标 CPU 利用率上升到配置的阈值以上,因此 HPA 决定将其扩展到 2 个副本。由于没有其他节点可用,CAS 跨越了一个新节点,在该节点上成功安排了新副本 - 到目前为止一切顺利!

问题是,当目标 CPU 利用率回落到配置的阈值以下时,HPA 决定缩减到 1 个副本。我希望看到新节点上的新副本被删除,从而使 CAS 能够关闭该新节点。但是,HPA 删除了现有服务 A 副本,该副本在具有大量可用资源的节点上 运行。这意味着我现在在一个新节点上有服务 A 运行,它本身不能被 CAS 删除,即使在现有节点上有足够的空间来安排服务 A。

这是 HPA 或 Kubernetes 调度程序的问题吗?服务 A 现在已经 运行 在新节点上运行了 48 小时,尽管现有节点上有足够的资源,但仍未重新安排。

在仔细检查我的集群配置后,我设法得出了为什么会发生这种情况的结论。

服务 A 在 public 子网上配置为 运行,CA 创建的新节点是 public。服务 A 的原始副本的现有节点 运行 是私有的,因此导致 HPA 删除此副本。

我不确定服务 A 最初是如何安排到这个节点上的,但那是另一个问题。