如何优雅地减少 GKE 的 Kubernetes 集群中的节点(vm)运行?
How to reduce nodes(vm) running in a Kubernetes cluster of GKE gracefully?
我想知道在 GKE 上减少 Kubernetes 集群中节点的优雅方法。
我有一些节点,每个节点都有一些 pods 监视共享作业队列并执行作业。我还有一个脚本,它监视作业队列的长度,并在长度超过阈值时通过执行 gcloud compute instance-groups managed resize
命令增加实例数,它工作正常。
但是我不知道当长度低于阈值时减少实例数量的优雅方法。
有没有什么好的方法可以在实例终止之前停止 pods 在终止实例上工作?或任何其他好的做法?
备注
- 每项工作大约需要 30 米到 1 小时
- 如果一个作业被执行多次(在最坏的情况下...)是可以接受的
我认为最好的方法不是使用 pod 来 运行 你的任务,而是使用 kubernetes 作业对象。这样,当任务完成时,作业将终止容器。您只需要一个可以根据队列启动 kubernetes 作业的小型 pod。
创建的 kube 作业越多,消耗的资源就越多,集群自动缩放器会发现它需要添加更多节点。一个 kube 作业即使被终止也需要完成,它会被重新安排完成。
GKE 文档中没有关于如果作业 运行ning 在节点上是否会发生缩减的直接信息,但规定似乎是 pod 是否可以轻松移动到另一个节点并且资源未得到充分利用,它将耗尽节点。
参考文献
在调整集群大小之前,让我们通过运行以下命令在云中设置项目上下文shell:
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
我想知道在 GKE 上减少 Kubernetes 集群中节点的优雅方法。
我有一些节点,每个节点都有一些 pods 监视共享作业队列并执行作业。我还有一个脚本,它监视作业队列的长度,并在长度超过阈值时通过执行 gcloud compute instance-groups managed resize
命令增加实例数,它工作正常。
但是我不知道当长度低于阈值时减少实例数量的优雅方法。
有没有什么好的方法可以在实例终止之前停止 pods 在终止实例上工作?或任何其他好的做法?
备注
- 每项工作大约需要 30 米到 1 小时
- 如果一个作业被执行多次(在最坏的情况下...)是可以接受的
我认为最好的方法不是使用 pod 来 运行 你的任务,而是使用 kubernetes 作业对象。这样,当任务完成时,作业将终止容器。您只需要一个可以根据队列启动 kubernetes 作业的小型 pod。
创建的 kube 作业越多,消耗的资源就越多,集群自动缩放器会发现它需要添加更多节点。一个 kube 作业即使被终止也需要完成,它会被重新安排完成。
GKE 文档中没有关于如果作业 运行ning 在节点上是否会发生缩减的直接信息,但规定似乎是 pod 是否可以轻松移动到另一个节点并且资源未得到充分利用,它将耗尽节点。
参考文献
在调整集群大小之前,让我们通过运行以下命令在云中设置项目上下文shell:
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