更新托管节点组 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

更新托管节点组

启动托管节点组更新后,Amazon EKS 会自动更新您的节点,完成 托管节点更新行为 中列出的步骤。如果您使用的是 Amazon EKS 优化版 AMI,Amazon EKS 会自动将最新的安全补丁和操作系统更新应用到您的节点,作为最新 AMI 版本的一部分。

在几种情况下,需要更新 Amazon EKS 托管节点组的版本或配置:

  • 您已更新 Amazon EKS 集群的 Kubernetes 版本,并且您希望更新节点以使用相同 Kubernetes 版本。

  • 新 AMI 发行版本可用于您的托管节点组。有关 AMI 版本的更多信息,请参阅以下章节:

  • 您希望调整托管节点组中的最少、最多或所需实例数。

  • 您希望对托管节点组中的实例添加或删除 Kubernetes 标签。

  • 您希望对托管节点组添加或删除 Amazon 标签。

  • 您需要部署包含配置更改(如更新的自定义 AMI)的最新版本启动模板。

  • 您已部署了版本 1.9.0 或更高版本的 Amazon VPC CNI 附加组件,启用了前缀委派附加组件,并希望节点组中的新 Amazon Nitro System 实例支持显著增加的 pods 数量。有关更多信息,请参阅提高 Amazon EC2 节点的可用 IP 地址数量

如果相比您的托管节点组的 Kubernetes 版本,有较新的 AMI 发行版,则可以将您的节点组的版本更新为使用较新的 AMI 版本。同样,如果您的集群运行的 Kubernetes 版本比节点组更新,则可以将节点组更新为使用与集群的 Kubernetes 版本匹配的最新 AMI 发行版。

如果托管节点组中的节点因扩缩操作或更新而终止,将会先耗尽该节点中的 pods。有关更多信息,请参阅托管节点更新行为

更新节点组版本

您可以使用 eksctl 或 Amazon Web Services Management Console 更新节点组。请选择包含要用于更新节点组的工具名称的选项卡。您更新到的版本不能高于控制面板的版本。

eksctl

使用 eksctl 更新节点组版本

  • 使用以下命令,将托管节点组更新到节点上当前部署的相同 Kubernetes 版本的最新 AMI 版本。将每个 example value 替换为您自己的值。

    eksctl upgrade nodegroup --name=node-group-name --cluster=my-cluster
    注意

    如果要将使用启动模板部署的节点组升级到新的启动模板版本,请将 --launch-template-version version-number 添加到上述命令。启动模板必须满足 启动模板支持 中的要求。如果启动模板包含自定义 AMI,则 AMI 必须满足 指定 AMI 中的要求。将节点组升级到启动模板的更新版本后,将回收所有节点,以匹配指定的启动模板版本的新配置。

    您不能将未使用启动模板部署的节点组直接升级到新的启动模板版本。相反,您必须使用启动模板部署新的节点组,以将节点组更新为新的启动模板版本。

    您可以将节点组升级到与控制面板的 Kubernetes 版本相同的版本。例如,如果您的集群运行 Kubernetes 1.23,则您可以使用以下命令将当前运行 Kubernetes 1.22 的节点升级到版本 1.23

    eksctl upgrade nodegroup \ --name=node-group-name \ --cluster=my-cluster \ --kubernetes-version=1.23
Amazon Web Services Management Console

使用 Amazon Web Services Management Console 更新节点组版本

  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters

  2. 选择包含要更新的节点组的集群。

  3. 如果至少有一个节点组具有可用更新,则页面顶部将出现一个提示框,通知存在可用的更新。如果选择 Compute(计算)选项卡,则在具有可用更新的节点组的 Node Groups(节点组)表中, AMI release version(AMI 版本)列会显示 Update now(立即更新)。要更新节点组,请选择 Update now(立即更新)。对于使用自定义 AMI 部署的节点组,不会显示通知。如果您的节点是使用自定义 AMI 部署的,请完成以下步骤以部署更新的自定义 AMI。

      1. 创建 AMI 的新版本。

      2. 使用新 AMI ID 创建新的启动模板版本。

      3. 将节点升级到新版本的启动模板。

  4. Update Node Group version(更新节点组版本)页面上,选择:

    • Update Node Group version(更新节点组版本)– 如果您部署了自定义 AMI,或者您的 Amazon EKS 优化版 AMI 当前位于集群的最新版本上,则此选项不可用。

    • Launch template version(启动模板版本)– 如果部署节点组时没有使用自定义启动模板,则此选项不可用。您只能更新已使用自定义启动模板部署的节点组的启动模板版本。选择要将节点组更新到的版本。如果您的节点组配置了自定义 AMI,则您选择的版本还必须指定 AMI。升级到更新版本的启动模板后,所有节点都会被回收,以匹配指定的启动模板版本的新配置。

  5. 对于 Update strategy(更新策略),选择下列选项之一,然后选择 Update(更新)

    • Rolling update(滚动更新) – 此选项会考虑集群的 pod 中断预算。如果 pod 中断预算问题导致 Amazon EKS 无法正常耗尽在此节点组上运行的 pods,则更新将失败。

    • Force update(强制更新) – 此选项不考虑 pod 中断预算。通过强制节点重新启动,无论是否存在 pod 中断预算问题,都会进行更新。

编辑节点组配置

您可以修改托管节点组的某些配置。

编辑节点组配置

  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters

  2. 选择包含要编辑的节点组的集群。

  3. 选择 Compute(计算)选项卡。

  4. 选择要编辑的节点组,然后选择 Edit (编辑)

  5. (可选)在 Edit node group(编辑节点组)页面上,编辑 Group configuration(组配置)

    • 标签 – 向节点组资源添加标签或从中删除标签。这些标签仅应用于 Amazon EKS 节点组。这些标签不会传播到其他资源,例如节点组中的子网或 Amazon EC2 实例。

    • Kubernetes 标签 – 向节点组中的节点添加或删除 Kubernetes 标签。此处显示的标签仅为已应用于 Amazon EKS 的标签。节点上可能存在此处未显示的其他标签。

    • Kubernetes 污点 – 向节点组中的节点添加或删除 Kubernetes 污点。添加的污点可以具有 No_SchedulePrefer_No_ScheduleNo_Execute 效果。

  6. (可选)在 Edit node group(编辑节点组)页面上,编辑 Group size(组大小)

    • 最小大小 – 指定托管节点组可以横向缩减到的最小节点数量。

    • 最大大小 – 指定托管节点组可以横向扩展到的最大节点数量。有关节点组中支持的最大节点数,请参阅 Amazon EKS 服务配额

    • 所需大小 – 指定托管节点组应当维持的当前节点数量。

  7. (可选)编辑 Node Group update configuration(节点组更新配置)。选择 Number(数字)Percentage(百分比)

    • Number(数字)– 选择并指定节点组中可以并行更新的节点数。这些节点在更新过程中将不可用。

    • Percentage(百分比)– 选择并指定节点组中可并行更新的节点的百分比。这些节点在更新过程中将不可用。如果您的节点组中有大量节点,这将非常有用。

  8. 编辑完成后,选择 Save changes(保存更改)