首页 > 解决方案 > Kubernetes Horizo​​ntal Pod Autoscaler 未利用节点资源

问题描述

我目前正在运行 Kubernetes 1.9.7 并成功使用Cluster Autoscaler和多个Horizo​​ntal Pod Autoscaler

但是,我最近开始注意到 HPA 在缩小副本时会偏爱更新的 Pod。

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

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

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

标签: kubernetesautoscaling

解决方案


在浏览了我的集群配置之后,我设法得出了关于为什么会发生这种情况的结论。

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

我不确定服务 A 一开始是如何安排到这个节点上的,但这是一个不同的问题。


推荐阅读