Google Kubernetes群集无法自动缩减

问题描述

我有一个启用了自动缩放的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