AWS EKS - 节点组更新实例类型

AWS EKS - NodeGroup Update Instance Types

我目前有一个使用 AWS EKS 的 Kubernetes 应用程序。我还创建了节点组;最初我在该节点组上配置了低实例容量,只能处理 4 pods。当我尝试对我的部署进行更新时发生了不足 pods,这主要是由于我最初提供的容量不足的实例类型。我的问题是可以更新实时节点组实例类型吗?

我通过创建具有扩展实例类型的额外节点组解决了这个问题。我只是想知道是否可以编辑实时节点组实例类型以进行扩展。

EKS 节点组实例类型在创建后无法更改。每次您想要新的实例类型时都必须创建一个新的节点组。

您无法更新实例类型、使用自动缩放或创建新的节点组并在那边制定 pods 计划

可以通过应用新的启动模板版本来更改实例类型。 然而,由于任何与节点相关的更改本质上都是不可变的,请注意这实际上会创建新的 EC2 实例并删除旧实例(取决于用例),并且不会更改现有节点上的实例类型。 EKS 节点组本质上是 EC2 自动缩放组,它使用启动模板来扩展和缩减节点。此外,启动模板定义了实例类型。因此,通过定义一个新的启动模板,任何将启动的新节点都将使用新的实例类型(另外,如果节点数量不变,则可以通过滚动更新执行更改以将影响降至最低到集群)。 在 AWS 控制台中更新的步骤:

  1. 导航到 EC2 服务下的自动缩放组
  2. 为节点组找到伸缩组对应的启动模板
  3. 通过选择操作创建新版本 - 修改模板(创建新版本) 这将采用现有模板,因此只需要修改实例类型。
  4. 通过单击操作设置启动模板的默认版本 - 设置默认版本
  5. 正在应用更改
    • 节点数保持不变:
      • 打开弹性伸缩组

      • 点击启动实例刷新

      • 设置适当的最小健康百分比和实例预热

        An instance refresh replaces instances. Each instance is terminated first and then replaced, which temporarily reduces the capacity available within your Auto Scaling group. Learn more

        如果只有一个节点,那么临时扩展到 2 个节点以便刷新过程能够重新安排从正在刷新的节点逐出的工作负载是有意义的。

    • 节点数减少:
      • 可以通过eksctl scale nodegroup缩减节点组。但请记住,这将终止节点组中的所有实例并根据更新的启动模板创建新实例。
    • 节点数增加:
      • 可以通过 eksctl scale nodegroup 扩展节点组。将创建的新实例将基于更新的启动模板。

Reference with screenshots