Google Kubernetes 集群不会自动缩小规模

rj9*_*j93 4 autoscaling google-compute-engine google-cloud-platform kubernetes google-kubernetes-engine

我有一个启用了自动扩展的 GKE 集群和一个单节点池。此节点池最少有 1 个节点,最多有 5 个节点。当我测试此集群的自动扩展时,当我向部署中添加更多副本时,它已正确扩展(添加了新节点)。当我删除部署时,我预计它会缩小规模,但查看日志它失败了,因为它无法从节点中逐出 kube-dns 部署:

reason: {
 messageId: "no.scale.down.node.pod.kube.system.unmovable"        
 parameters: [
  0: "kube-dns-7c976ddbdb-brpfq"         
 ]
}
Run Code Online (Sandbox Code Playgroud)

kube-dns 没有作为守护进程运行,但我对此没有任何控制权,因为这是一个托管集群。

我正在使用 Kubernetes 1.16.13-gke.1。

如何缩小集群节点池规模?

Fél*_*net 10

自动缩放器不会从 kube-system 命名空间中驱逐 pod,除非它们是守护进程集或者具有 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
Run Code Online (Sandbox Code Playgroud)