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