Google Kubernetes 集群未自动缩减

Google Kubernetes Cluster not autoscaling down

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

自动缩放器不会从 kube-system 命名空间中逐出 pods,除非它们是守护程序集或具有 PodDisruptionBudget。

对于 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