帮助改进此页面
想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
更新 Amazon EKS 附加组件
在新版本发布时或您将集群更新到新的 Kubernetes 次要版本后,Amazon EKS 不会自动更新附加组件。要更新现有集群的附加组件,必须启动更新。启动更新后,Amazon EKS 会为您更新附加组件。在更新某个附加组件之前,请查看该附加组件的最新文档。有关可用附加组件的列表,请参阅 来自 AWS 的 Amazon EKS 附加组件。如果附加组件需要 IAM 角色,请参阅 来自 AWS 的 Amazon EKS 附加组件 中特定附加组件的详细信息,以了解有关创建角色的详细信息。
先决条件
在创建附加组件之前,请完成以下步骤:
-
检查附加组件是否需要 IAM 角色。有关更多信息,请参阅 Amazon EKS 附加组件。
-
验证 Amazon EKS 附加组件版本是否与集群兼容。有关更多信息,请参阅 验证 Amazon EKS 附加组件版本与集群的兼容性。
过程
您可以使用 eksctl
、AWS Management Console 或 AWS CLI 更新 Amazon EKS 附加组件。
- eksctl
-
使用
eksctl
更新 Amazon EKS 附加组件-
确定集群上目前安装的附加组件和附加组件版本。将
替换为您的集群名称。my-cluster
eksctl get addon --cluster
my-cluster
示例输出如下。
NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE coredns v1.8.7-eksbuild.2 ACTIVE 0 kube-proxy v1.23.7-eksbuild.1 ACTIVE 0 v1.23.8-eksbuild.2 vpc-cni v1.10.4-eksbuild.1 ACTIVE 0 v1.12.0-eksbuild.1,v1.11.4-eksbuild.1,v1.11.3-eksbuild.1,v1.11.2-eksbuild.1,v1.11.0-eksbuild.1
您的输出可能会有所不同,这取决于您的集群上安装的附加组件和版本。您可以看到,在前面的输出示例中,集群上的两个现有附加组件在
UPDATE AVAILABLE
列中有较新的版本可用。 -
更新附加组件。
-
将以下命令复制到您的设备。根据需要对该命令进行以下修改:
-
将
替换为您的集群名称。my-cluster
-
请将
替换为集群所在的 AWS 区域。region-code
-
将
替换为上一步的输出中返回的要更新的附加组件名称。vpc-cni
-
如果要更新到的版本早于最新版本,请将
替换为上一步的输出中返回的适用版本号。一些附加组件有推荐版本。有关更多信息,请参阅您正在更新的附加组件的文档。latest
-
如果附加组件使用 Kubernetes 服务账户和 IAM 角色,请将
替换为您的账户 ID,并将111122223333
替换为您创建的现有 IAM 角色的名称。有关创建角色的说明,请参阅您正在创建的附加组件的文档。指定服务账户角色需要您的集群具有 IAM OpenID Connect(OIDC)提供程序。要确定您的集群是否具有此提供程序,或者要创建此提供程序,请参阅 为集群创建 IAM OIDC 提供商。role-name
如果附加组件不使用 Kubernetes 服务账户和 IAM 角色,请删除
serviceAccountRoleARN: arn:aws:iam::
行。111122223333
:role/role-name
-
选项保留附加组件的现有值。如果您为附加组件设置设定了自定义值,但未使用此选项,则 Amazon EKS 会使用其默认值覆盖您的值。如果您使用此选项,那么我们建议您在更新生产集群上的附加组件之前,先测试非生产集群上所有更改的字段和值。如果您将该值改为preserve
overwrite
,则所有设置都将更改为 Amazon EKS 的默认值。如果您为任何设置设定了自定义值,这些值可能会被 Amazon EKS 的默认值覆盖。如果您将该值改为none
,Amazon EKS 不会更改任何设置的值,但更新可能会失败。如果更新失败,您会收到一条帮助您解决冲突的错误消息。cat >update-addon.yaml <<EOF apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name:
my-cluster
region:region-code
addons: - name:vpc-cni
version:latest
serviceAccountRoleARN: arn:aws:iam::111122223333
:role/role-name
resolveConflicts:preserve
EOF
-
-
运行修改后的命令以创建
update-addon.yaml
文件。 -
将配置文件应用到您的集群。
eksctl update addon -f update-addon.yaml
有关更新附加组件的更多信息,请参阅
eksctl
文档中的 Updating addons。 -
-
- AWS Management Console
-
使用 AWS Management Console 更新 Amazon EKS 附加组件
访问 https://console.aws.amazon.com/eks/home#/clusters
打开 Amazon EKS 控制台。 -
在左侧导航窗格中,选择集群。
-
选择要为其更新附加组件的集群名称。
-
选择附加组件选项卡。
-
选择要更新的附加组件
-
选择编辑。
-
在配置
name of addon
页面上,执行以下操作:-
选择要使用的版本。该附加组件可能有推荐版本。有关更多信息,请参阅您正在更新的附加组件的文档。
-
对于选择 IAM 角色,您可以使用节点的 IAM 角色(未设t)或为该附加组件创建的现有角色。如果没有可选择的角色,则表示没有现有角色。无论您选择哪个选项,请参阅您正在创建的附加组件(用于创建IAM 策略并将其附加到某个角色)的文档。选择 IAM 角色需要您的集群具有 IAM OpenID Connect(OIDC)提供程序。要确定您的集群是否具有此提供程序,或者要创建此提供程序,请参阅为集群创建 IAM OIDC 提供商。
-
展开可选配置设置。
-
在配置值中,请输入附加组件特有的任何配置信息。有关更多信息,请参阅您正在更新的附加组件的文档。
-
对于 Conflict resolution method(冲突解决方法),选择其中一个选项。如果您为附加组件设置设定了自定义值,我们建议选择 Preserve(保留)选项。如果您不选择此选项,Amazon EKS 会使用其默认值覆盖您的值。如果您使用此选项,那么我们建议您在更新生产集群上的附加组件之前,先测试非生产集群上所有更改的字段和值。
-
-
选择 Save changes(保存更改)。
- AWS CLI
-
先决条件
在您的设备或 AWS CloudShell 上安装和配置了 AWS Command Line Interface(AWS CLI)的版本
2.12.3
或更高版本,或版本1.27.160
或更高版本。要查看当前版本,请使用
。软件包管理器(如aws --version | cut -d / -f2 | cut -d ' ' -f1
yum
、apt-get
或适用于 macOS 的 Homebrew)通常比 AWS CLI 的最新版本落后几个版本。要安装最新版本,请参阅《AWS Command Line Interface 用户指南》中的安装、更新和卸载 AWS CLI,以及使用 aws configure 快速配置。AWS CloudShell 中安装的 AWS CLI 版本也可能比最新版本落后几个版本。如需更新,请参阅《AWS CloudShell 用户指南》中的将 AWS CLI 安装到主目录。使用 AWS CLI 更新 Amazon EKS 附加组件
-
查看已安装的附加组件列表。将
替换为您的集群名称。my-cluster
aws eks list-addons --cluster-name
my-cluster
示例输出如下。
{ "addons": [ "coredns", "kube-proxy", "vpc-cni" ] }
-
查看要更新的附加组件的当前版本。将
替换为您的集群名称,将my-cluster
替换为要更新的附加组件的名称。vpc-cni
aws eks describe-addon --cluster-name
my-cluster
--addon-namevpc-cni
--query "addon.addonVersion" --output text示例输出如下。
v1.10.4-eksbuild.1
-
确定哪些版本的 附加组件可用于您的集群版本。将
替换为您的集群版本,将1.30
替换为要更新的附加组件的名称。vpc-cni
aws eks describe-addon-versions --kubernetes-version
--addon-name1.30
vpc-cni
\ --query 'addons[].addonVersions[].{Version: addonVersion, Defaultversion: compatibilities[0].defaultVersion}' --output table示例输出如下。
------------------------------------------ | DescribeAddonVersions | +-----------------+----------------------+ | Defaultversion | Version | +-----------------+----------------------+ | False | v1.12.0-eksbuild.1 | | True | v1.11.4-eksbuild.1 | | False | v1.10.4-eksbuild.1 | | False | v1.9.3-eksbuild.1 | +-----------------+----------------------+
默认情况下,
Defaultversion
列中值为True
的版本是创建附加组件时使用的版本。 -
更新您的附加组件。将以下命令复制到您的设备。根据需要对该命令进行以下修改,然后运行修改后的命令。有关此命令的更多信息,请参阅《Amazon EKS 命令行参考》中的
update-addon
。-
将
替换为您的集群名称。my-cluster
-
将
替换为前面步骤的输出中返回的要更新的附加组件名称。vpc-cni
-
将
替换为上一步的输出中返回的要更新到的版本。一些附加组件有推荐版本。有关更多信息,请参阅您正在更新的附加组件的文档。version-number
-
如果附加组件使用 Kubernetes 服务账户和 IAM 角色,请将
替换为您的账户 ID,并将111122223333
替换为您创建的现有 IAM 角色的名称。有关创建角色的说明,请参阅您正在创建的附加组件的文档。指定服务账户角色需要您的集群具有 IAM OpenID Connect(OIDC)提供程序。要确定您的集群是否具有此提供程序,或者要创建此提供程序,请参阅 为集群创建 IAM OIDC 提供商。role-name
如果附加组件不使用 Kubernetes 服务账户和 IAM 角色,请删除
serviceAccountRoleARN: arn:aws:iam::
行。111122223333
:role/role-name
-
--resolve-conflicts
PRESERVE
选项保留附加组件的现有值。如果您为附加组件设置设定了自定义值,但未使用此选项,则 Amazon EKS 会使用其默认值覆盖您的值。如果您使用此选项,那么我们建议您在更新生产集群上的附加组件之前,先测试非生产集群上所有更改的字段和值。如果您将该值改为OVERWRITE
,则所有设置都将更改为 Amazon EKS 的默认值。如果您为任何设置设定了自定义值,这些值可能会被 Amazon EKS 的默认值覆盖。如果您将该值改为NONE
,Amazon EKS 不会更改任何设置的值,但更新可能会失败。如果更新失败,您会收到一条帮助您解决冲突的错误消息。
-
如果要删除所有自定义配置,请使用
选项执行更新。这会将所有自定义配置设置回默认值。如果不想更改自定义配置,请勿提供--configuration-values '{}'
标志。如果想要调整自定义配置,请将--configuration-values
替换为新参数。要查看参数列表,请参阅创建附加组件部分的查看配置架构步骤。{}
aws eks update-addon --cluster-name
my-cluster
--addon-namevpc-cni
--addon-versionversion-number
\ --service-account-role-arn arn:aws:iam::111122223333
:role/role-name
--configuration-values '{}'
--resolve-conflictsPRESERVE
-
-
检查更新的状态。将
替换为您的集群名称,将my-cluster
替换为您正在更新的附加组件的名称。vpc-cni
aws eks describe-addon --cluster-name
my-cluster
--addon-namevpc-cni
示例输出如下。
{ "addon": { "addonName": "
vpc-cni
", "clusterName": "my-cluster
", "status": "UPDATING", [...]当状态为
ACTIVE
时更新完成。
-