问题描述
我有一个启用了自动缩放的GKE群集和一个节点池。该节点池的最小节点数为1,最大为5。当我测试了此集群的自动扩展时,在向部署中添加更多副本时,它已正确扩展(添加了新节点)。当我删除部署时,我会期望它会按比例缩小,但是查看日志会失败,因为它无法从节点退出kube-dns部署:
reason: {
messageId: "no.scale.down.node.pod.kube.system.unmovable"
parameters: [
0: "kube-dns-7c976ddbdb-brpfq"
]
}
kube-dns不能作为守护程序运行,但是我对此没有任何控制权,因为这是一个托管群集。
我正在使用Kubernetes 1.16.13-gke.1。
如何使群集节点池缩小?
解决方法
我发现了this的github问题,其中指出您需要向节点池添加污点。我已经做到了,然后节点池会自动缩小为零。
可以找到文档here。
,除非是守护程序集或具有PodDisruptionBudget,否则自动缩放器不会从kube-system命名空间中逐出pods。
对于kube-dns,kube-dns-autoscaler以及kube-dns中的其他一些GKE管理的部署,您需要添加poddisruptionbudget。
例如:
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
annotations:
labels:
k8s-app: kube-dns
name: kube-dns-bbc
namespace: kube-system
spec:
maxUnavailable: 1
selector:
matchLabels:
k8s-app: kube-dns