使用集群自动缩放器时如何在不停机的情况下实现节点的优雅终止?

Posted

技术标签:

【中文标题】使用集群自动缩放器时如何在不停机的情况下实现节点的优雅终止?【英文标题】:How to implement graceful termination of nodes without service downtime when using cluster auto-scaler? 【发布时间】:2019-10-06 10:55:27 【问题描述】:

我已经使用 EKS 设置了 K8S 集群。 Cluster Auto-scaler (CA) 已配置为根据 Pod 的资源可用性增加/减少节点数量。如果不需要节点,CA 将终止该节点,并且该节点上的 pod 可以调度到另一个节点。在这里,CA 在重新调度另一个节点上的 Pod 之前终止该节点。因此,在节点终止后,pod 会被安排在另一个节点上。因此,在重新安排的 pod 变得健康之前,某些服务会出现一些停机时间。

如何通过确保在节点终止之前将 pod 安排在另一个节点上来避免停机?

节点的正常终止时间设置为 10 分钟(默认)。

【问题讨论】:

【参考方案1】:

您需要运行应用程序的多个副本。即使在节点突然死亡的情况下,这也将使您的应用程序能够生存。此外,您可能希望为您的应用清单配置antiAffinity 规则,以确保副本驻留在不同的节点上。

【讨论】:

我不想为每个 pod 保留多个副本。因为大部分资源将被使用,这会增加成本。根据 CA 文档,它执行优雅的缩减,这应该在节点终止之前将 Pod 重新调度到其他地方。我想我缺少一些 Cluster-Autoscaler 的配置。

以上是关于使用集群自动缩放器时如何在不停机的情况下实现节点的优雅终止?的主要内容,如果未能解决你的问题,请参考以下文章

Kafka不停机,如何无感知迁移ZooKeeper集群?

Kafka不停机,如何无感知迁移ZooKeeper集群?

如何在不导致停机的情况下部署 Node.js 应用程序

如何在不停机的情况下更新和 ECS 服务添加一个额外的负载平衡服务与之对话?

如何在零停机的情况下迁移 Kubernetes 集群

NDB 集群迁移