具有自动扩缩功能的 GKE 节点池不会缩减
GKE node pool with Autoscaling does not scale down
我有一个带有两个节点池的 GKE 集群。我在我的一个节点池上打开了自动缩放,但它似乎没有自动缩小。
我启用了 HPA,效果很好。当我看不到流量时,它将 pods 缩小到 1。
API 目前没有任何流量,所以我预计节点也会缩减。
但它仍然运行最多 5 个节点,尽管一些节点使用了不到 50% 的可分配资源 memory/CPU。
我在这里错过了什么?我打算将这些 pods 移动到更大的机器上,但为此我需要节点自动缩放来控制每月成本。
有很多原因会导致CA无法成功缩容。如果我们恢复它应该如何正常工作,它将是这样的:
- 集群自动缩放器将定期检查(每 10 秒)节点的利用率。
- 如果利用率小于 0.5,则节点将被视为利用率不足。
- 然后节点将被标记为删除,并将在接下来的 10 分钟内受到监控,以确保利用率保持在 0.5 以下。
- 如果即使在 10 分钟后它仍未得到充分利用,那么该节点将被集群自动缩放程序删除。
如果以上未完成,则其他原因阻止您的节点缩减规模。根据我的经验,PDB 需要应用于 kube-system pods,我想这可能就是原因;但是,发生这种情况的原因有很多,以下是可能导致缩小规模问题的原因:
1. PDB 未应用于您的 kube 系统 pods。 Kube 系统 pods 阻止 Cluster Autoscaler 删除它们所在的节点 运行。您可以为 kube-system pods 手动添加 Pod Disruption Budget (PDBs),可以安全地重新安排到其他地方,这可以通过下一个命令添加:
`kubectl create poddisruptionbudget PDB-NAME --namespace=kube-system --selector app=APP-NAME --max-unavailable 1`
2。使用本地存储(卷)的容器,甚至是空卷。 Kubernetes 使用本地存储防止 pods 节点上的缩减事件。寻找这种阻止 Cluster Autoscaler 缩减节点的配置。
3。 Pods 注释为 cluster-autoscaler.kubernetes.io/safe-to-evict: true
。 查找带有此注释的 pods 可以防止节点缩小
4.带有 cluster-autoscaler.kubernetes.io/scale-down-disabled: true
. 注释的节点 查找带有此注释的节点,这些节点可能会阻止集群自动缩放。这些配置是我建议您检查的配置,以使您的集群缩减未充分利用的节点。 -----
您还可以查看 this 页面,其中解释了防止缩小的配置,这可能是您遇到的情况。
我有一个带有两个节点池的 GKE 集群。我在我的一个节点池上打开了自动缩放,但它似乎没有自动缩小。
我启用了 HPA,效果很好。当我看不到流量时,它将 pods 缩小到 1。
API 目前没有任何流量,所以我预计节点也会缩减。
但它仍然运行最多 5 个节点,尽管一些节点使用了不到 50% 的可分配资源 memory/CPU。
我在这里错过了什么?我打算将这些 pods 移动到更大的机器上,但为此我需要节点自动缩放来控制每月成本。
有很多原因会导致CA无法成功缩容。如果我们恢复它应该如何正常工作,它将是这样的:
- 集群自动缩放器将定期检查(每 10 秒)节点的利用率。
- 如果利用率小于 0.5,则节点将被视为利用率不足。
- 然后节点将被标记为删除,并将在接下来的 10 分钟内受到监控,以确保利用率保持在 0.5 以下。
- 如果即使在 10 分钟后它仍未得到充分利用,那么该节点将被集群自动缩放程序删除。
如果以上未完成,则其他原因阻止您的节点缩减规模。根据我的经验,PDB 需要应用于 kube-system pods,我想这可能就是原因;但是,发生这种情况的原因有很多,以下是可能导致缩小规模问题的原因:
1. PDB 未应用于您的 kube 系统 pods。 Kube 系统 pods 阻止 Cluster Autoscaler 删除它们所在的节点 运行。您可以为 kube-system pods 手动添加 Pod Disruption Budget (PDBs),可以安全地重新安排到其他地方,这可以通过下一个命令添加:
`kubectl create poddisruptionbudget PDB-NAME --namespace=kube-system --selector app=APP-NAME --max-unavailable 1`
2。使用本地存储(卷)的容器,甚至是空卷。 Kubernetes 使用本地存储防止 pods 节点上的缩减事件。寻找这种阻止 Cluster Autoscaler 缩减节点的配置。
3。 Pods 注释为 cluster-autoscaler.kubernetes.io/safe-to-evict: true
。 查找带有此注释的 pods 可以防止节点缩小
4.带有 cluster-autoscaler.kubernetes.io/scale-down-disabled: true
. 注释的节点 查找带有此注释的节点,这些节点可能会阻止集群自动缩放。这些配置是我建议您检查的配置,以使您的集群缩减未充分利用的节点。 -----
您还可以查看 this 页面,其中解释了防止缩小的配置,这可能是您遇到的情况。