我有一个带有两个节点池的 GKE 集群。我在我的一个节点池上打开了自动缩放功能,但它似乎没有自动缩小。
我已启用 HPA,效果很好。当我看不到流量时,它会将 Pod 缩小到 1。
API 目前没有获得任何流量,因此我预计节点也会缩小规模。
但它仍然运行最多 5 个节点,尽管某些节点使用的可分配内存/CPU 少于 50%。
我在这里错过了什么?我计划将这些 pod 移至更大的机器,但要做到这一点,我需要节点自动缩放来控制每月成本。
导致CA降尺度不成功的原因有很多。如果我们恢复正常工作,它将是这样的:
如果上述任务没有完成,那么其他原因会阻止您的节点缩小规模。根据我的经验,PDB 需要应用于 kube-system pod,我想说这可能就是原因;然而,发生这种情况的原因有很多,以下是可能导致缩小问题的原因:
1。 PDB 不会应用于您的 kube-system pod。 Kube-system pod 会阻止 Cluster Autoscaler 删除运行它们的节点。您可以为 kube-system pod 手动添加 Pod 中断预算 (PDB),以便可以在其他地方安全地重新安排,这可以使用下一个命令添加:
`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: false
注释的节点。 查找具有此注释且可能阻止集群自动缩放的节点。我建议您检查这些配置,以便使您的集群缩减未充分利用的节点。 -----
您还可以看到this页面,其中解释了防止缩小规模的配置,这可能就是您所发生的情况。