我有一个带有两个节点池的 GKE 集群。我在我的一个节点池上打开了自动缩放,但它似乎没有自动缩小。
我已启用 HPA 并且工作正常。当我看不到流量时,它会将 Pod 缩小到 1。
API 目前没有获得任何流量,因此我希望节点也能缩小规模。
尽管有些节点使用了不到 50% 的可分配内存/CPU,但它仍然最多运行 5 个节点。
我在这里错过了什么?我打算将这些 Pod 移到更大的机器上,但要做到这一点,我需要节点自动缩放来控制每月成本。
答案 0 :(得分:1)
导致 CA 无法成功缩减规模的原因有很多。如果我们恢复它应该如何正常工作,它将是这样的:
如果上面没有完成,那么其他原因会阻止您的节点缩小规模。根据我的经验,PDB 需要应用于 kube-system pods,我认为这可能是原因;但是,发生这种情况的原因有很多,以下是可能导致缩减问题的原因:
1. PDB 不适用于您的 kube-system pod。 Kube-system pod 会阻止 Cluster Autoscaler 删除它们正在运行的节点。您可以为 kube-system pod 手动添加 Pod 中断预算 (PDB),这些 kube-system pod 可以安全地重新安排在其他地方,这可以使用下一个命令添加:
`kubectl create poddisruptionbudget PDB-NAME --namespace=kube-system --selector app=APP-NAME --max-unavailable 1`
2.容器使用本地存储(卷),甚至是空卷。 Kubernetes 可防止在具有使用本地存储的 Pod 的节点上缩减事件。寻找这种防止 Cluster Autoscaler 缩减节点的配置。
3.带有 cluster-autoscaler.kubernetes.io/safe-to-evict: true
注释的 Pod。 查找带有此注释的 Pod,以防止节点缩减
4.用 cluster-autoscaler.kubernetes.io/scale-down-disabled: true
注释的节点。 查找带有此注释的节点,这些节点可以阻止集群自动缩放。这些配置是我建议您检查的配置,以使您的集群能够缩减未充分利用的节点。 -----
您还可以看到 this 页面,其中解释了防止降级的配置,这可能是您正在发生的事情。