结合使用 EC2 竞价型实例与 Amazon EKS 的最佳实践有哪些?

上次更新日期:2021 年 12 月 22 日

我想要结合使用 Amazon Elastic Compute Cloud (Amazon EC2) 竞价型实例与我的 Amazon Elastic Kubernetes Service (Amazon EKS)。最佳实践有哪些?

简短描述

以下是结合使用 Amazon EC2 竞价型实例与 Amazon EKS 的一些最佳实践:

  • 请勿将竞价型实例用于长时间运行的任务或有状态的应用程序。
  • 结合使用托管式节点组与竞价型实例。
  • 向节点组添加多个实例类型。
  • 对自托管式节点组使用 AWS 节点终止处理程序。

解决方法

请勿将竞价型实例用于长时间运行的任务或有状态的应用程序

竞价型实例的使用寿命较短,可能会导致长时间运行的任务意外终止。还可能影响有状态的应用程序,因为有状态的应用程序无法容忍关闭。相反,对于长时间运行的任务,请使用按需型实例。

结合使用托管式节点组与竞价型实例

您可以将托管式节点组的容量类型设置竞价型。然后,托管式节点组会将 Auto Scaling 组配置为使用 EC2 Auto Scaling 容量再平衡。当 EC2 Auto Scaling 容量再平衡功能激活且竞价型节点收到再平衡建议时,Amazon EKS 会尝试更换竞价型节点。

在新的竞价型节点准备就绪后,Amazon EKS 将分离并排空前一个竞价型节点。这有助于降低 Amazon Elastic Block Store (Amazon EBS) 卷损坏或数据库连接中断的风险。

向节点组添加多个实例类型

每个竞价型实例池都由特定可用区中特定实例类型的未使用 EC2 实例容量组成。当节点组尝试预置新节点时,将使用其配置中定义的实例类型之一。如果实例类型在任何可用区中都没有竞价型容量,则节点组无法扩展,将降级。

要避免此问题,请增加节点组中类似实例类型的数量。例如,对于 m5.large (2 vCPU/8 GiB RAM) 实例类型,添加具有相同 vCPU 和 RAM 值的实例类型,如 m5a.large、m5n.large 和 m4.large。

对自托管式节点组使用 AWS 节点终止处理程序

AWS 节点终止处理程序(来自 GitHub 网站)可作为部署或守护进程集部署到 Amazon EKS 集群中。AWS 节点终止处理程序可向自托管式节点组添加其缺少的功能。这有助于自托管式节点组检测并正确响应 EC2 维护事件、竞价中断通知、Auto Scaling 组缩减事件以及可用区再平衡。使用队列处理器选项将每个 AWS 节点终止处理程序功能添加到自托管式节点组。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?