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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...