本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
更新托管节点组
在多种情况下,更新 Amazon EKS 托管节点组的版本或配置会很有用:
-
您已更新 Amazon EKS 集群的 Kubernetes 版本,并希望更新节点以使用相同的 Kubernetes 版本。
-
新 AMI 发行版本可用于您的托管节点组。有关 AMI 版本的更多信息,请参阅Amazon EKS 优化的 Amazon Linux AMI 版本。
-
您希望调整托管节点组中的最少、最多或所需实例数。
-
您希望对托管节点组中的实例添加或删除 Kubernetes 标签。
-
您希望对托管节点组添加或删除 AWS 标签。
-
您需要部署具有配置更改的启动模板的新版本,如更新的自定义 AMI。
如果您的托管节点组的 Kubernetes 版本具有较新的 AMI 发行版,则可以更新节点组的版本以使用较新的 AMI 版本。同样,如果您的集群运行的 Kubernetes 版本高于节点组,则可以更新节点组以使用最新的 AMI 发行版来匹配集群的 Kubernetes 版本。
您无法将节点组回滚到较早的 Kubernetes 版本或 AMI 版本。
当托管节点组中的节点因扩展操作或更新而终止时,将会先耗尽该节点中的 Pod。有关更多信息,请参阅托管节点更新行为。
更新节点组版本
您可以使用 AWS 管理控制台 或 eksctl 更新节点组版本。
使用 AWS 管理控制台 更新节点组版本
-
(可选)如果您使用的是 Kubernetes Cluster Autoscaler
,请将部署缩减至零个副本以避免冲突的扩展操作。 kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system
-
在 https://console.amazonaws.cn/eks/home#/clusters
处打开 Amazon EKS 控制台。 -
选择包含要更新的节点组的集群。
-
如果至少有一个使用 Amazon EKS 优化型 AMI 部署的节点组有可用的更新,您将在集群名称下看到一条通知。通知可让您了解有多少节点组具有可用的更新。在 Configuration (配置) 选项卡的 Compute (计算) 选项卡上的 Node Groups (节点组) 表中,您将看到这些值右侧的 Update now (立即更新):
-
具有 优化 AMI 更新的每个节点组的 AMI 发行版Amazon EKS列中的值。如果使用自定义 AMI 部署节点组,则不会显示此选项。如果节点是使用自定义 AMI 部署的,则应执行以下步骤来部署新的已更新的自定义 AMI。首先,创建 AMI 的新版本,然后使用新的 AMI ID 创建新的启动模板版本,最后将节点升级到新版本的启动模板。为此,请为要更新的节点组选择 Update now (立即更新)。
-
使用启动模板部署的每个节点组的 Launch template (启动模板) 列中的值。为要更新其启动模板版本的节点组选择 Update now (立即更新)。
如果您从表中选择一个节点组,并且它有一个可用更新,您将在 Node Group configuration (节点组配置) 页面上收到一条通知。在此页面上,您可以选择 Update now (立即更新)。
-
-
在 Update Node Group version (更新节点组版本) 页面上,选择:
-
Update Node Group version (更新节点组版本) 如果您部署了自定义 AMI 或者您的 EKS 优化 AMI 已在集群的最新版本上,则此选项不可用。–
-
Launch template version (启动模板版本) – 如果节点组在没有自定义启动模板的情况下部署,则此选项不可用。您只能更新已使用自定义启动模板部署的节点组的启动模板版本。选择要将节点组更新到的版本。如果您的节点组配置了自定义 AMI,则您选择的版本还必须指定 AMI。当您升级到较新版本的启动模板时,将回收所有节点以匹配指定的启动模板版本的新配置。
-
-
对于 Update strategy (更新策略),选择以下选项之一,然后选择 Update (更新)。
-
滚动更新 – 此选项考虑集群的 pod 中断预算。如果出现导致 Amazon EKS 无法正确耗尽正在此节点组上运行的 Pod 的 Pod 的 Pod 中断预算问题,则更新将失败。
-
强制更新 – 此选项不考虑 Pod 中断预算。强制重新启动节点以进行更新,而不考虑 Pod 中断预算问题。
-
-
(可选)如果您使用 Kubernetes Cluster Autoscaler
,请将部署扩展回所需数量的副本。 kubectl scale deployments/cluster-autoscaler --replicas=<1> -n kube-system
使用 eksctl
更新节点组版本
-
(可选)如果您使用的是 Kubernetes Cluster Autoscaler
,请将部署缩减至零个副本以避免冲突的扩展操作。 kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system
-
使用以下命令将托管节点组升级到节点上当前部署的相同 Kubernetes 版本的最新 AMI 版本。
eksctl upgrade nodegroup --name=<node-group-name> --cluster=<cluster-name>
注意 您可以将节点组升级到比节点组的当前 Kubernetes 版本高一个次要版本的版本,但该版本不能晚于集群的 Kubernetes 版本。例如,如果您的集群运行 Kubernetes 1.18,则可以使用以下命令将当前运行 Kubernetes 1.17 的节点升级到版本 1.18。
eksctl upgrade nodegroup --name=<node-group-name> --cluster=<cluster-name> --kubernetes-version=<1.18>
-
(可选)如果您使用 Kubernetes Cluster Autoscaler
,请将部署扩展回所需数量的副本。 kubectl scale deployments/cluster-autoscaler --replicas=<1> -n kube-system
编辑节点组配置
您可以修改托管节点组的一些配置。
编辑节点组配置
-
在 https://console.amazonaws.cn/eks/home#/clusters
处打开 Amazon EKS 控制台。 -
选择包含要编辑的节点组的集群。
-
选择 Configuration (配置) 选项卡。在 Compute (计算) 选项卡上,选择要编辑的节点组,然后选择 Edit (编辑)。
-
(可选)在 Edit node group (编辑节点组) 页面上,编辑 Group configuration (组配置)。
-
Tags (标签) – 向节点组资源添加标签或从中删除标签。这些标签仅应用于 Amazon EKS 节点组。它们不会传播到其他资源,例如子网或节点组中的 Amazon EC2 实例。
-
Kubernetes labels (Kubernetes 标签) – 向节点组中的节点添加或删除 Kubernetes 标签。此处显示的标签仅为已应用于 Amazon EKS 的标签。节点上可能存在此处未显示的其他标签。
-
-
(可选)在 Edit node group (编辑节点组) 页面上,编辑 Group size (组大小)。
-
Minimum size (最小大小) – 指定托管节点组可以缩减到的最小节点数。
-
最大大小 – 指定托管节点组可扩展到的最大节点数。默认情况下,托管节点组最多支持 100 个节点。
-
Desired size (所需大小) – 指定托管节点组应保留的当前节点数。
-
-
完成编辑后,选择 Save changes (保存更改)。