更新 Amazon EKS 附加组件 - Amazon EKS

帮助改进此页面

想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

更新 Amazon EKS 附加组件

在新版本发布时或您将集群更新到新的 Kubernetes 次要版本后,Amazon EKS 不会自动更新附加组件。要更新现有集群的附加组件,必须启动更新。启动更新后,Amazon EKS 会为您更新附加组件。在更新某个附加组件之前,请查看该附加组件的最新文档。有关可用附加组件的列表,请参阅 来自 AWS 的 Amazon EKS 附加组件。如果附加组件需要 IAM 角色,请参阅 来自 AWS 的 Amazon EKS 附加组件 中特定附加组件的详细信息,以了解有关创建角色的详细信息。

先决条件

在创建附加组件之前,请完成以下步骤:

过程

您可以使用 eksctl、AWS Management Console 或 AWS CLI 更新 Amazon EKS 附加组件。

eksctl
使用 eksctl 更新 Amazon EKS 附加组件
  1. 确定集群上目前安装的附加组件和附加组件版本。将 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 列中有较新的版本可用。

  2. 更新附加组件。

    1. 将以下命令复制到您的设备。根据需要对该命令进行以下修改:

      • my-cluster 替换为您的集群名称。

      • 请将 region-code 替换为集群所在的 AWS 区域。

      • vpc-cni 替换为上一步的输出中返回的要更新的附加组件名称。

      • 如果要更新到的版本早于最新版本,请将 latest 替换为上一步的输出中返回的适用版本号。一些附加组件有推荐版本。有关更多信息,请参阅您正在更新的附加组件的文档

      • 如果附加组件使用 Kubernetes 服务账户和 IAM 角色,请将 111122223333 替换为您的账户 ID,并将 role-name 替换为您创建的现有 IAM 角色的名称。有关创建角色的说明,请参阅您正在创建的附加组件的文档。指定服务账户角色需要您的集群具有 IAM OpenID Connect(OIDC)提供程序。要确定您的集群是否具有此提供程序,或者要创建此提供程序,请参阅 为集群创建 IAM OIDC 提供商

        如果附加组件不使用 Kubernetes 服务账户和 IAM 角色,请删除 serviceAccountRoleARN: arn:aws:iam::111122223333:role/role-name 行。

      • preserve 选项保留附加组件的现有值。如果您为附加组件设置设定了自定义值,但未使用此选项,则 Amazon EKS 会使用其默认值覆盖您的值。如果您使用此选项,那么我们建议您在更新生产集群上的附加组件之前,先测试非生产集群上所有更改的字段和值。如果您将该值改为 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
    2. 运行修改后的命令以创建 update-addon.yaml 文件。

    3. 将配置文件应用到您的集群。

      eksctl update addon -f update-addon.yaml

    有关更新附加组件的更多信息,请参阅 eksctl 文档中的 Updating addons

AWS Management Console
使用 AWS Management Console 更新 Amazon EKS 附加组件
  1. 访问 https://console.aws.amazon.com/eks/home#/clusters 打开 Amazon EKS 控制台。

  2. 在左侧导航窗格中,选择集群

  3. 选择要为其更新附加组件的集群名称。

  4. 选择附加组件选项卡。

  5. 选择要更新的附加组件

  6. 选择编辑

  7. 配置 name of addon 页面上,执行以下操作:

    1. 选择要使用的版本。该附加组件可能有推荐版本。有关更多信息,请参阅您正在更新的附加组件的文档

    2. 对于选择 IAM 角色,您可以使用节点的 IAM 角色(未设t)或为该附加组件创建的现有角色。如果没有可选择的角色,则表示没有现有角色。无论您选择哪个选项,请参阅您正在创建的附加组件(用于创建IAM 策略并将其附加到某个角色)的文档。选择 IAM 角色需要您的集群具有 IAM OpenID Connect(OIDC)提供程序。要确定您的集群是否具有此提供程序,或者要创建此提供程序,请参阅为集群创建 IAM OIDC 提供商

    3. 展开可选配置设置

    4. 配置值中,请输入附加组件特有的任何配置信息。有关更多信息,请参阅您正在更新的附加组件的文档

    5. 对于 Conflict resolution method(冲突解决方法),选择其中一个选项。如果您为附加组件设置设定了自定义值,我们建议选择 Preserve(保留)选项。如果您不选择此选项,Amazon EKS 会使用其默认值覆盖您的值。如果您使用此选项,那么我们建议您在更新生产集群上的附加组件之前,先测试非生产集群上所有更改的字段和值。

  8. 选择 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。软件包管理器(如 yumapt-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 附加组件
  1. 查看已安装的附加组件列表。将 my-cluster 替换为您的集群名称。

    aws eks list-addons --cluster-name my-cluster

    示例输出如下。

    { "addons": [ "coredns", "kube-proxy", "vpc-cni" ] }
  2. 查看要更新的附加组件的当前版本。将 my-cluster 替换为您的集群名称,将 vpc-cni 替换为要更新的附加组件的名称。

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query "addon.addonVersion" --output text

    示例输出如下。

    v1.10.4-eksbuild.1
  3. 确定哪些版本的 附加组件可用于您的集群版本。将 1.30 替换为您的集群版本,将 vpc-cni 替换为要更新的附加组件的名称。

    aws eks describe-addon-versions --kubernetes-version 1.30 --addon-name 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 的版本是创建附加组件时使用的版本。

  4. 更新您的附加组件。将以下命令复制到您的设备。根据需要对该命令进行以下修改,然后运行修改后的命令。有关此命令的更多信息,请参阅《Amazon EKS 命令行参考》中的 update-addon

    • my-cluster 替换为您的集群名称。

    • vpc-cni 替换为前面步骤的输出中返回的要更新的附加组件名称。

    • version-number 替换为上一步的输出中返回的要更新到的版本。一些附加组件有推荐版本。有关更多信息,请参阅您正在更新的附加组件的文档

    • 如果附加组件使用 Kubernetes 服务账户和 IAM 角色,请将 111122223333 替换为您的账户 ID,并将 role-name 替换为您创建的现有 IAM 角色的名称。有关创建角色的说明,请参阅您正在创建的附加组件的文档。指定服务账户角色需要您的集群具有 IAM OpenID Connect(OIDC)提供程序。要确定您的集群是否具有此提供程序,或者要创建此提供程序,请参阅 为集群创建 IAM OIDC 提供商

      如果附加组件不使用 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-name vpc-cni --addon-version version-number \ --service-account-role-arn arn:aws:iam::111122223333:role/role-name --configuration-values '{}' --resolve-conflicts PRESERVE
  5. 检查更新的状态。将 my-cluster 替换为您的集群名称,将 vpc-cni 替换为您正在更新的附加组件的名称。

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni

    示例输出如下。

    { "addon": { "addonName": "vpc-cni", "clusterName": "my-cluster", "status": "UPDATING", [...]

    当状态为 ACTIVE 时更新完成。