如何减少在GKE的Kubernetes集群中正常运行的节点(vm)?

时间:2016-12-26 09:08:00

标签: kubernetes google-kubernetes-engine

我想知道在GKE上减少Kubernetes集群中节点的优雅方法。

我有一些节点,每个节点都有一些观看共享作业队列并执行作业的pod。我还有一个脚本,它监视作业队列的长度,并通过执行gcloud compute instance-groups managed resize命令增加长度超过阈值的实例数,并且它正常工作。

但是,当长度低于阈值时,我不知道减少实例数量的优雅方法。

在实例终止之前,有没有什么好方法可以阻止pod在终止实例上工作?或任何其他良好做法?

请注意

  • 每项工作大约需要30分钟到1小时
  • 如果作业被多次执行(在最坏的情况下......)
  • ,这是可以接受的

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是使用kubernetes作业对象,而不是使用pod来运行任务。这样,当任务完成时,作业终止容器。您只需要一个可以根据队列启动kubernetes作业的小型pod。

创建的kube作业越多,消耗的资源就越多,集群自动缩放器就会看到它需要添加更多节点。即使kube作业被终止,它也需要完成,它将重新安排完成。

在GKE文档中没有关于在节点上运行Job是否会发生缩小的信息的直接信息,但是规定似乎是pod可以很容易地移动到另一个节点并且资源利用不足它会耗尽节点。

<强> Refrences

答案 1 :(得分:0)

在调整集群大小之前,让我们通过运行以下命令在云外壳中设置项目上下文:

gcloud config set project [PROJECT_ID]
gcloud config set compute/zone [COMPUTE_ZONE]
gcloud config set compute/region [COMPUTE_REGION]
gcloud components update 

注意:您还可以在以下命令中使用--project,-zone和--region操作标志来设置项目,计算区域和区域为标志

gcloud container clusters resize [CLUSTER_NAME] --node-pool [POOL_NAME] --num-nodes [NUM_NODES]

对每个节点池运行以上命令。如果只有一个节点池,则可以省略--node-pool标志。

参考:https://cloud.google.com/kubernetes-engine/docs/how-to/resizing-a-cluster