【问题标题】:Google Kubernetes Cluster not autoscaling downGoogle Kubernetes 集群没有自动缩减
【发布时间】:2020-12-24 08:33:12
【问题描述】:

我有一个启用了自动扩缩功能的 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。

如何使集群节点池缩小?

【问题讨论】:

  • 这种行为取决于我们集群的状态。你在上面安装了什么?有状态集?恶魔集?其他插件?
  • @guillaumeblaquiere 我只部署了一个简单的busybox部署,有一些请求和限制。我没有其他部署,当我希望它测试缩小范围时,我完全删除了这个部署。 kube-dns 已由 GKE 部署,并未作为守护程序集运行。

标签: kubernetes google-cloud-platform google-compute-engine google-kubernetes-engine autoscaling


【解决方案1】:

自动扩缩器不会从 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

【讨论】:

    【解决方案2】:

    我发现this github 问题,它指定您需要向节点池添加污点。我已经这样做了,然后节点池自动缩小到零。

    文档可以在here找到。

    【讨论】:

      猜你喜欢
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 2020-03-31
      • 2018-08-04
      • 2018-07-01
      • 2020-03-28
      相关资源
      最近更新 更多