【问题标题】:AWS EKS - NodeGroup Update Instance TypesAWS EKS - 节点组更新实例类型
【发布时间】:2020-07-17 05:18:03
【问题描述】:

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

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

【问题讨论】:

    标签: amazon-web-services kubernetes amazon-eks


    【解决方案1】:

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

    【讨论】:

    • 谢谢。关于分离节点;我所做的是 1. 节点流失 2. 删除节点组正确吗?
    • 听起来很合法,删除节点组是什么意思?您是否销毁了 cloudformation 堆栈?
    • 删除包含旧实例类型的节点组(替换为具有适当实例类型的新节点组)。首先终止实例而不从集群中删除节点组将导致产生具有旧实例类型的新实例,这不是我想要实现的目标。主要目标是用不同类型替换节点实例类型,因为它一旦启动就无法修改;解决方案是创建一个包含新实例类型的新节点组并删除旧节点组,但在删除之前我会耗尽这些节点。
    【解决方案2】:

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

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

        • 点击开始实例刷新

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

          实例刷新替换实例。每个实例都会先终止然后替换,这会暂时减少 Auto Scaling 组中的可用容量。 Learn more

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

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

    Reference with screenshots

    【讨论】:

      【解决方案3】:

      您不能更新实例类型、使用自动缩放或创建新的节点组并在那里进行 pod 调度

      【讨论】:

        猜你喜欢
        • 2020-08-19
        • 2021-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-18
        • 2021-07-31
        • 2021-10-16
        • 1970-01-01
        相关资源
        最近更新 更多