尽管启用了自动缩放,但节点池不会将其节点大小减小到零

Wil*_*idt 5 google-cloud-platform gcloud kubernetes google-kubernetes-engine

我创建了两个节点池。一小笔用于所有google系统工作,一笔大用于我的任务。作业完成后,较大的应将其大小减小为0。

问题是:即使没有cron作业,节点池也不会将其大小减小为0。

创建集群:

gcloud beta container --project "projectXY" clusters create "cluster" --zone "europe-west3-a" --username "admin" --cluster-version "1.9.6-gke.0" --machine-type "n1-standard-1" --image-type "COS" --disk-size "100" --scopes "https://www.googleapis.com/auth/cloud-platform" --num-nodes "1" --network "default" --enable-cloud-logging --enable-cloud-monitoring --subnetwork "default" --enable-autoscaling --enable-autoupgrade --min-nodes "1" --max-nodes "1"
Run Code Online (Sandbox Code Playgroud)

创建节点池:

完成所有任务后,节点池应将其大小减小为0。

gcloud container node-pools create workerpool --cluster=cluster --machine-type="n1-highmem-8", -m "n1-highmem-8" --zone=europe-west3-a, -z europe-west3-a --disk-size=100 --enable-autoupgrade --num-nodes=0 --enable-autoscaling --max-nodes=2 --min-nodes=0
Run Code Online (Sandbox Code Playgroud)

创建cron作业:

kubectl create -f cronjob.yaml
Run Code Online (Sandbox Code Playgroud)

Gal*_*one 3

引用谷歌文档

“注意:从 Kubernetes 版本 1.7 开始,您可以将节点池的最小大小指定为零。如果不需要运行工作负载,则节点池中的实例可以完全缩小。但是,当节点池可以扩展到零大小,但整个集群大小不会缩小到零个节点(因为运行系统 Pod 始终需要至少一个节点)。”

还请注意:

“集群自动缩放器还会根据节点池的总容量需求来衡量每个节点的使用情况。如果某个节点在一段时间内没有安排新的 Pod,并且[此选项对您不起作用,因为它是最后一个节点]该节点上运行的所有 Pod 都可以调度到池中的其他节点上,自动缩放器会移动 Pod 并删除该节点。

请注意,集群自动缩放程序基于 Pod 资源请求来工作,即您的 Pod 请求了多少资源。集群自动缩放程序不会考虑您的 Pod 正在主动使用的资源。从本质上讲,集群自动缩放程序相信您提供的 Pod 资源请求是准确的,并根据该假设在节点上调度 Pod。”

因此我会检查:

  • 您的 Kubernetes 集群版本至少为 1.7
  • 最后一个节点上没有运行 pod(检查每个命名空间,必须在每个节点上运行的 pod 不计在内:fluidd、kube-dns、kube-proxy),事实上没有 cronjobs 是不够的
  • 对于自动缩放器来说不是对于相应的托管实例组,
  • 没有任何处于任何奇怪状态的 pod 仍然分配给该节点
  • 集群中没有等待调度的 Pod

如果仍然一切可能是自动缩放器的问题,您可以打开一个私人问题,向 Google 指定您的项目 ID,因为社区无能为力。

如果您对评论中的问题跟踪器链接感兴趣,我将查看您的项目(我为 Google Cloud Platform 支持工作)