Kubernetes Autoscaler如何始终保持一个节点空闲

时间:2018-11-02 07:40:21

标签: kubernetes gpu autoscaling google-kubernetes-engine

我目前正在使用GPU,由于它们价格昂贵,所以我希望它们根据负载进行缩放。但是,由于它会安装驱动程序并进行其他一些准备工作,因此扩展集群并准备节点大约需要8分钟。

因此,要解决此问题,我想让一个节点保持空闲状态并自动缩放其余节点。有什么办法吗?

这样,当请求到来时,空闲节点将接受它,并创建一个新的空闲节点。

谢谢!

1 个答案:

答案 0 :(得分:1)

有三种不同的方法:

1-第一种方法完全是手动的。这将帮助您使节点保持空闲状态,而不会在自动扩展过程中导致应用程序停机。

您将必须防止一个特定节点自动销售(我们称其为“节点A”)。创建一个新节点,并将节点A的容器的副本复制到该新节点。 该节点将处于运行状态,但它不属于自动扩展过程。 一旦自动缩放过程完成并且引导完成,您就可以安全地耗尽该节点。

 a. Create a new node. 
 b. Prevent node A from evicting its pods by adding the annotation "cluster-autoscaler.kubernetes.io/safe-to-evict": "false"
 c. Copy a replica of node A, make replicas of the pods into that new node. 
 d. Once the autoscaler has scaled all the nodes, and the boot time has
    completed, you may safely drain node A, and delete it.

2-您可以运行Pod Disruption Budget

3-如果要在自动缩放器缩小时阻止删除节点A,请you could set the annotation“ cluster-autoscaler.kubernetes.io/scale-down-disabled”:“ true”节点。这仅在缩小过程中有效。