管理 Amazon VPC CNI plugin for Kubernetes - Amazon EKS

管理 Amazon VPC CNI plugin for Kubernetes

Amazon EKS 支持通过适用于 Kubernetes 的 Amazon VPC 容器网络接口 (CNI, Container Network Interface) 插件进行本机 VPC 联网。使用此插件允许 Kubernetes pods 在 pod 内具有与其在 VPC 网络上相同的 IP 地址。有关更多信息,请参阅Amazon EKS 中使用适用于 Kubernetes 的 Amazon VPC CNI 插件的 Pod 联网

为每个集群版本推荐的 Amazon VPC CNI 附加组件版本
1.23 1.22 1.21 1.20 1.19
附加组件版本 1.11.4-eksbuild.1 1.11.4-eksbuild.1 1.11.4-eksbuild.1 1.11.4-eksbuild.1 1.11.4-eksbuild.1

如果您使用 AWS Management Console 创建了 1.18 版或更高版本的集群,则 Amazon EKS 已为您安装插件作为 Amazon EKS 附加组件。如果您起初使用任何工具创建了 1.17 版本或更低版本的集群,或者您使用 AWS Management Console 以外的任何其他工具创建了 1.18 版本或更高版本的集群,则 Amazon EKS 会以自行管理的附加组件的形式为您安装该插件。您可以按照 添加 Amazon VPC CNI Amazon EKS 附加组件 中的步骤将自行管理的附加组件迁移到 Amazon EKS 附加组件。如果您已将 Amazon VPC CNI plugin for Kubernetes 附加组件添加到集群,则您可以按照 更新 Amazon VPC CNI plugin for Kubernetes 附加组件删除 Amazon VPC CNI plugin for Kubernetes 附加组件 部分中的程序来管理该附加组件。有关 Amazon EKS 附加组件的更多信息,请参阅 Amazon EKS 附加组件

要更新 Amazon EKS 附加组件版本,请参阅 更新 Amazon VPC CNI plugin for Kubernetes 附加组件。要使用 Amazon EKS Amazon Elastic Container Registry 或您自己的存储库中的容器镜像更新自行管理的附加组件版本,请参阅 更新 Amazon VPC CNI plugin for Kubernetes 自行管理的附加组件

重要

创建集群时部署的附加组件版本可能早于推荐的版本。如果您使用清单更新了自行管理的附加组件,则该版本不包括 -eksbuild.1

先决条件

添加 Amazon VPC CNI Amazon EKS 附加组件

您可以使用 eksctl、AWS Management Console 或 AWS CLI 将 Amazon VPC CNI Amazon EKS 附加组件添加到您的集群。

重要

在添加 Amazon VPC CNI Amazon EKS 附加组件之前,请确认您不会自行管理 Amazon EKS 将开始管理的任何设置。要确定 Amazon EKS 管理的设置,请参阅 Amazon EKS 附加组件配置

eksctl

使用 eksctl 添加推荐版本的 Amazon EKS 附加组件

my-cluster 替换为您的集群名称,将 arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole 替换为现有的 IAM 角色(请参阅先决条件)。

eksctl create addon --name vpc-cni 1.11.4-eksbuild.1 --cluster my-cluster \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole --force

如果任意 Amazon EKS 附加组件设置与自行管理附加组件的现有设置冲突,那么添加 Amazon EKS 附加组件将会失败,而且您会收到一条帮助您解决冲突的错误消息。

如果您想添加其他版本的附加组件,则可以使用以下命令查看可用于附加组件的所有版本和集群的版本。将 1.23 替换为集群版本。

eksctl utils describe-addon-versions --name vpc-cni --kubernetes-version 1.23 | grep AddonVersion:

create addon 命令中的 v1.11.4-eksbuild.1 替换为您想要添加的输出中返回的版本,然后运行 create addon 命令。

AWS Management Console

使用 AWS Management Console 添加推荐版本的 Amazon EKS 附加组件

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

  2. 在左侧导航窗格中,选择 Clusters(集群),然后选择要为其配置 Amazon VPC CNI plugin for Kubernetes 附加组件的集群的名称。

  3. 选择 Add-ons(附加组件)选项卡。

  4. 选择 Add new(新增)

    • 对于 Name(名称),请选择 vpc-cni

    • 选择您想使用的 Version(版本)。我们建议使用 1.11.4-eksbuild.1 版本,但如有必要,您可以选择另一个版本。

    • 对于 Service account role(服务账户角色),选择您附加了 AmazonEKS_CNI_Policy IAM policy 的 IAM 角色的名称(请参阅先决条件)。

    • 选择 Override existing configuration for this add-on on the cluster.(覆盖集群上此附加组件的现有配置。) 如果任意 Amazon EKS 附加组件设置与自行管理附加组件的现有设置冲突,那么添加 Amazon EKS 附加组件将会失败,而且您会收到一条帮助您解决冲突的错误消息。

    • 选择 Add(添加)

AWS CLI

要使用 AWS CLI 添加推荐版本的 Amazon EKS 附加组件,请将 my-cluster 替换为您的集群名称,将 arn:aws:iam::111122223333:role/AmazonEKSCNIRole 替换为您已将 AmazonEKS_CNI_Policy IAM policy 添加到的 IAM 角色的 ARN(请参阅先决条件),然后运行命令。

aws eks create-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.11.4-eksbuild.1 \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole --resolve-conflicts OVERWRITE

如果任意 Amazon EKS 附加组件设置与自行管理附加组件的现有设置冲突,那么添加 Amazon EKS 附加组件将会失败,而且您会收到一条帮助您解决冲突的错误消息。

如果您想添加其他版本的附加组件,则可以使用以下命令查看可用于附加组件的所有版本和集群的版本。将 1.23 替换为集群版本。

aws eks describe-addon-versions --addon-name vpc-cni --kubernetes-version 1.23 \ --query "addons[].addonVersions[].[addonVersion, compatibilities[].Version]" --output text

create-addon 命令中的 v1.11.4-eksbuild.1 替换为您想要添加的输出中返回的版本,然后运行 create-addon 命令。

更新 Amazon VPC CNI plugin for Kubernetes 附加组件

重要

在更新 Amazon VPC CNI plugin for Kubernetes 附加组件之前,请确认您不会自行管理 Amazon EKS 将会管理的任何设置。要确定 Amazon EKS 管理的设置,请参阅 Amazon EKS 附加组件配置

本程序用于更新 Amazon VPC CNI plugin for Kubernetes 附加组件。如果您尚未添加 Amazon VPC CNI plugin for Kubernetes 附加组件,请改为完成 更新 Amazon VPC CNI plugin for Kubernetes 自行管理的附加组件 中的程序。当新版本发布之后或您将集群更新到一个新的 Kubernetes 次要版本后,Amazon EKS 不会自动更新附加组件。要更新现有集群的附加组件,您必须启动更新,然后 Amazon EKS 会为您更新该附加组件。

建议您一次更新一个次要版本。例如,如果您的当前的次要版本为 1.9,并且您想要更新到 1.11,则应首先更新到最新的补丁版本 1.10,再更新到最新的补丁版本 1.11

您可以使用 eksctl、AWS Management Console 或 AWS CLI更新您的集群上的 Amazon VPC CNI plugin for Kubernetes 附加组件。

eksctl

使用 eksctl 将 Amazon EKS 附加组件更新为推荐版本

  1. 检查附加组件的当前版本。将 my-cluster 替换为您的集群名称。

    eksctl get addon --name vpc-cni --cluster my-cluster

    输出示例如下。

    NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE vpc-cni v1.7.5-eksbuild.2 ACTIVE 0 arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole v1.11.4-eksbuild.1
  2. 将附加组件更新为推荐版本

    eksctl update addon --name vpc-cni --version 1.11.4-eksbuild.1 --cluster my-cluster --force

    如果您想更新到其他版本的附加组件,则可以使用以下命令查看可用于附加组件的所有版本和集群的版本。将 1.23 替换为集群版本。

    eksctl utils describe-addon-versions --name vpc-cni --kubernetes-version 1.23 | grep AddonVersion:

    update addon 命令中的 v1.11.4-eksbuild.1 替换为您想要添加的输出中返回的版本,然后运行 update addon 命令。

AWS Management Console

使用 AWS Management Console 将 Amazon EKS 附加组件更新为推荐版本

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

  2. 在左侧导航窗格中,选择 Clusters(集群),然后选择要为其更新 Amazon VPC CNI plugin for Kubernetes 附加组件的集群的名称。

  3. 选择 Add-ons(附加组件)选项卡。

  4. 选择 vpc-cni 框右上角中的框,然后选择 Edit(编辑)

    • 选择您要使用的 Amazon EKS 附加组件的 Version(版本)。我们建议使用 1.11.4-eksbuild.1 版本,但如有必要,您可以选择另一个版本。

    • 对于 Service account role(服务账户角色),如果尚未进行选择,则选择您附加了 AmazonEKS_CNI_Policy IAM policy 的 IAM 角色的名称(请参阅先决条件)。

    • 选择 Override existing configuration for this add-on on the cluster.(覆盖集群上此附加组件的现有配置。)

    • Select Update(更新)。

AWS CLI

使用 AWS CLI 将 Amazon EKS 附加组件更新为推荐版本

  1. 检查附加组件的当前版本。将 my-cluster 替换为您的集群名称。

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

    输出示例如下。

    v1.7.5-eksbuild.2

    返回的版本可能有所不同。

  2. 将附加组件更新为最新的推荐版本。将 my-cluster 替换为您的集群名称。

    aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.11.4-eksbuild.1 --resolve-conflicts OVERWRITE

    如果您想更新到其他版本的附加组件,则可以使用以下命令查看可用于附加组件的所有版本和集群的版本。将 1.23 替换为集群版本。

    aws eks describe-addon-versions --addon-name vpc-cni --kubernetes-version 1.23 --query "addons[].addonVersions[].[addonVersion, compatibilities[].Version]" --output text

    update-addon 命令中的 v1.11.4-eksbuild.1 替换为您想要添加的输出中返回的版本,然后运行 update-addon 命令。

删除 Amazon VPC CNI plugin for Kubernetes 附加组件

移除 Amazon EKS 附加组件时,您有两种选择:

  • 在集群上保留附加组件的软件:此选项删除了 Amazon EKS 对任何设置和功能的管理,使 Amazon EKS 能够在您启动更新后向您发出更新通知并自动更新 Amazon EKS 附加组件,但会将附加组件的软件保留在您的集群上。此选项使附加组件成为自我管理的附加组件,而不是 Amazon EKS 附加组件。附加组件没有停机时间。

  • 从集群中完全删除附加组件:只有在集群中没有资源依赖于附加组件提供的功能时,才应从集群中移除 Amazon EKS 附加组件。删除 Amazon EKS 附加组件后,如有需要,您可以再次添加它。

如果附加组件有与其关联的 IAM 账户,则不会移除该 IAM 账户。

您可以使用 eksctl、AWS Management Console 或 AWS CLI 从您的集群中删除 Amazon VPC CNI plugin for Kubernetes 附加组件。

eksctl

使用 eksctl 删除 Amazon EKS 附加组件

my-cluster 替换为集群名称,然后运行以下命令。移除 --preserve 会从您的集群中移除附加组件软件。

eksctl delete addon --cluster my-cluster --name vpc-cni --preserve
AWS Management Console

使用 AWS Management Console 删除 Amazon EKS 附加组件

  1. 访问 https://console.aws.amazon.com/eks/home#/clusters 打开 Amazon EKS 控制台。

  2. 在左侧导航窗格中,选择 Clusters(集群),然后选择要删除其 Amazon VPC CNI plugin for Kubernetes 附加组件的集群的名称。

  3. 选择 Add-ons(附加组件)选项卡。

  4. 选择 vpc-cni 框的右上角的复选框,然后选择 Remove(删除)。如果您希望 Amazon EKS 停止管理附加组件的设置,但希望在集群上保留附加组件,以便您可以自行管理附加组件的所有设置,请选择 Preserve on cluster(保留在集群上)。键入 vpc-cni,然后选择 Remove(删除)

AWS CLI

使用 AWS CLI 删除 Amazon EKS 附加组件

my-cluster 替换为集群名称,然后运行以下命令。移除 --preserve 会从您的集群中移除附加组件软件。

aws eks delete-addon --cluster-name my-cluster --addon-name vpc-cni --preserve

更新 Amazon VPC CNI plugin for Kubernetes 自行管理的附加组件

如果您有一个集群,但尚未向其添加 Amazon VPC CNI plugin for Kubernetes 附加组件,或者需要自行管理附加组件,请完成以下步骤更新附加组件。如果您已添加了 Amazon VPC CNI plugin for Kubernetes Amazon EKS 附加组件,请改为按照 更新 Amazon VPC CNI plugin for Kubernetes 附加组件 中的程序操作。

重要
  • 版本指定为 major-version.minor-version.patch-version

  • 您每次只更新一个次要版本。例如,如果您的当前次要版本为 1.9,并且您想要更新到 1.11,则应首先更新到 1.10,再更新到 1.11

  • 所有版本都适用于所有 Amazon EKS 支持的 Kubernetes 版本,但并非每个版本的所有功能都适用于所有 Kubernetes 版本。使用不同的 Amazon EKS 功能时,如果需要特定版本的附加组件,则会在功能文档中注明。

  • 建议您更新为版本 1.11.4,尽管您可以在必要时更新到任何发布版本

要更新自行管理的附加组件

  1. 查看 GitHub 上的 releases,以查看可用版本并熟悉要更新到的版本中的更改。

  2. 使用以下命令确定您集群的当前 Amazon VPC CNI plugin for Kubernetes 附加组件版本:

    kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3

    输出示例如下。

    1.11.4-eksbuild.1

    您的输出可能看起来与示例输出不同。Amazon EKS 最初与集群一起部署的版本与之前的输出类似。但是,如果您已经使用清单至少更新了一次附加组件,则输出可能不包括 -eksbuild.1

  3. 使用 Helm V3 或更高版本或通过使用清单更新 DaemonSet

    Helm
    1. eks-charts 存储库添加到 Helm。

      helm repo add eks https://aws.github.io/eks-charts
    2. 更新您的本地存储库,以确保您拥有最新的图表。

      helm repo update
    3. 备份当前设置,以便在后续步骤中确定需要为哪些设置指定值。

      kubectl get daemonset aws-node -n kube-system -o yaml > aws-k8s-cni-old.yaml
    4. 如果您使用 Helm 安装了现有的 Amazon VPC CNI plugin for Kubernetes DaemonSet,则跳至下一步骤。

      完成以下选项之一,以便 Helm 可以管理 DaemonSet 资源:

      • 将 Helm 注释和标签添加到现有资源中。

        1. 将以下内容复制到您的设备。如果您想要使用另一个发布名称,请替换 aws-vpc-cni。运行该命令以创建 helm-cni.sh 文件。

          cat >helm-cni.sh <<EOF #!/usr/bin/env bash set -euo pipefail for kind in daemonSet clusterRole clusterRoleBinding serviceAccount; do echo "setting annotations and labels on $kind/aws-node" kubectl -n kube-system annotate --overwrite $kind aws-node meta.helm.sh/release-name=aws-vpc-cni kubectl -n kube-system annotate --overwrite $kind aws-node meta.helm.sh/release-namespace=kube-system kubectl -n kube-system label --overwrite $kind aws-node app.kubernetes.io/managed-by=Helm done EOF
        2. 使脚本成为可执行文件。

          chmod +x helm-cni.sh
        3. 运行脚本

          ./helm-cni.sh
      • 删除现有的 DaemonSet 资源。

        重要

        从完成此步骤到下一步之间,您的集群将遇到停机时间。

        kubectl delete serviceaccount aws-node -n kube-system kubectl delete customresourcedefinition eniconfigs.crd.k8s.amazonaws.com kubectl delete clusterrole aws-node kubectl delete clusterrolebinding aws-node kubectl delete daemonset aws-node -n kube-system
    5. 使用以下选项之一安装图表。在运行安装之前,请检查您在上一步中对 DaemonSet 的设置所做的备份,然后查看配置设置以确定是否需要设置其中任何一个。

      如果您有现有的 IAM 角色可用于 DaemonSet,则在后面的安装选项的结尾添加以下行。如果您没有关联 aws-node Kubernetes 服务账户的 IAM 角色,那么我们建议创建一个。将 111122223333 替换为您的账户 ID,并将 AmazonEKSVPCCNIRole 替换为您的角色名称。如需创建角色,请参阅配置 Amazon VPC CNI plugin for Kubernetes 将 IAM 角色用于服务账户

      --set serviceAccount.annotations."eks\.amazonaws\.com/role-arn"=arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole

      如果您在上一步中添加了 Helm 注释和标签,则将以下设置添加到以下任何选项中。

      --set originalMatchLabels=true --set crd.create=false
      • 如果您的节点有权访问 Amazon EKS Amazon ECR 存储库并且位于 us-west-2 AWS 区域,则用发布名称 aws-vpc-cni 和默认配置安装图表。

        helm upgrade -i aws-vpc-cni eks/aws-vpc-cni \ --namespace kube-system \ --set image.tag=v1.11.4 \ --set init.image.tag=v1.11.4
      • 如果您的节点有权访问 Amazon EKS Amazon ECR 存储库并且位于 us-west-2 以外的AWS 区域,则用发布名称 aws-vpc-cni 和安装图表。请将 eks-ecr-account 替换为您的集群所在的 AWS 区域 的 Amazon 容器镜像注册表 中的值。region-code 替换为集群所在的 AWS 区域。

        helm upgrade -i aws-vpc-cni eks/aws-vpc-cni \ --namespace kube-system \ --set image.account=eks-ecr-account \ --set image.region=region-code \ --set image.tag=v1.11.4 \ --set init.image.account=eks-ecr-account --set init.image.region=region-code \ --set init.image.tag=v1.11.4
      • 如果您的节点无法访问 Amazon EKS Amazon ECR 存储库

        1. 请提取以下容器镜像并将其推送到节点有权访问的存储库。有关如何提取、标记和推送镜像到您自己的存储库的更多信息,请参阅 将容器镜像从一个存储库复制到另一个存储库。我们建议在以下命令中使用该版本,但是如果有必要,您可以将它替换为任何发布版本。将 602401143452region-code 替换为您的集群所在的 AWS 区域 的 Amazon 容器镜像注册表 中的值。

          602401143452.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni-init:v1.11.4 602401143452.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni:v1.11.4
        2. 使用发布名称 aws-vpc-cni 和默认配置安装图表。在运行安装之前,请检查您在上一步中对 DaemonSet 的设置所做的备份,然后查看配置设置以确定是否需要设置其中任何一个。将 registry/repo:tag 替换为您的注册表、存储库和标签。

          helm upgrade -i aws-vpc-cni eks/aws-vpc-cni \ --namespace kube-system \ --set image.override=registry/repo:tag \ --set init.image.override=registry/repo:tag
    Manifest
    1. 如果您更改了当前 Amazon VPC CNI plugin for Kubernetes DaemonSet 的任何默认设置,或者您需要从自己的存储库中提取容器镜像才能更新 DaemonSet,或者您的集群位于 us-west-2 以外的区域,或者您需要更新到版本 1.7 或更早版本的特定修补程序版本,则跳到下一步。

      运行以下命令以更新您的 Amazon VPC CNI plugin for Kubernetes 附加组件。您可以将 1.11.4 更改为 1.7.0 或更高版本。无论您为 1.7 指定了什么修补程序版本,例如 1.7.5,都将提取镜像的最新修补程序版本(1.7.10)。

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.11.4/config/master/aws-k8s-cni.yaml

      如果您需要更新到早于 1.7.0 的版本,则使用下面的 URL 提取清单。如有必要,您可以将 1.6 更改为更早的版本。清单会为您指定的版本提取镜像的最新修补程序版本。

      kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni.yaml

      跳至查看 DaemonSet 的状态步骤。

    2. 如果您的节点有权访问 Amazon EKS Amazon ECR 镜像存储库,请跳到下一步。

      请提取以下容器镜像并将其推送到节点有权访问的存储库。有关如何提取、标记和推送镜像到您自己的存储库的更多信息,请参阅 将容器镜像从一个存储库复制到另一个存储库。我们建议在以下命令中使用该版本,但是如果有必要,您可以将它替换为任何发布版本。将 602401143452region-code 替换为您的集群所在的 AWS 区域 的 Amazon 容器镜像注册表 中的值。

      602401143452.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni-init:v1.11.4 602401143452.dkr.ecr.region-code.amazonaws.com/amazon-k8s-cni:v1.11.4
    3. 如果您尚未更改 DaemonSet 的任何默认设置,请跳到下一步。

      备份当前设置,以便您可以将设置与新清单中的默认设置进行比较。

      kubectl get daemonset aws-node -n kube-system -o yaml > aws-k8s-cni-old.yaml
    4. 下载 Amazon VPC CNI plugin for Kubernetes 附加组件的清单。您可以将 1.11.4 更改为 1.7.0 或更高版本。无论您为 1.7 指定了什么修补程序版本,例如 1.7.5,都将提取镜像的最新修补程序版本(1.7.10)。

      curl -o aws-k8s-cni.yaml https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.11.4/config/master/aws-k8s-cni.yaml

      如果您需要更新到早于 1.7.0 的版本,则使用下面的 URL 提取清单。如有必要,您可以将 1.6 更改为更早的版本。清单会为您指定的版本提取镜像的最新修补程序版本。

      curl -o aws-k8s-cni.yaml https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni.yaml

      如果您需要 1.7 或更低版本的特定修补程序,请在文本编辑器中打开文件,并将以下两行中的 v1.11.4 更改为您想要的特定修补程序版本。根据您下载的文件版本,v1.11.4 可能是不同的版本号,也可能是 latest。进行更改后,保存文件。

      image: "602401143452.dkr.ecr.us-west-2.amazonaws.com/amazon-k8s-cni-init:1.11.4" image: "602401143452.dkr.ecr.us-west-2.amazonaws.com/amazon-k8s-cni:v1.11.4"
    5. 如果您在上一步中没有将容器镜像复制到您自己的存储库,则跳至下一个步骤。

      将文件中的注册表、存储库和标签替换为您自己的。

      1. 请将以下命令中的 your-registry 替换为您的注册表,然后运行修改后的命令以替换文件中的 602401143452.dkr.ecr.us-west-2.amazonaws.com

        sed -i.bak -e 's|602401143452.dkr.ecr.us-west-2.amazonaws.com|your-registry|' aws-k8s-cni.yaml
      2. 将以下命令中的 your-repositorytag 替换为您的存储库和标签,然后运行修改后的命令以替换文件中的 amazon-k8s-cni-init:v1.11.4。将 1.11.4 替换为您下载的清单的版本。

        sed -i.bak -e 's|amazon-k8s-cni-init:v1.11.4|your-repository:tag|' aws-k8s-cni.yaml
      3. 将以下命令中的 your-repositorytag 替换为您的存储库和标签,然后运行修改后的命令以替换文件中的 amazon-k8s-cni:v1.11.4。将 1.11.4 替换为您下载的清单的版本。

        sed -i.bak -e 's|amazon-k8s-cni:v1.11.4|your-repository:tag|' aws-k8s-cni.yaml
      4. 跳至比较设置步骤。

    6. 运行以下命令,以将文件中的信息替换为您的集群所在的 AWS 区域 的信息。

      1. 请将文件中的 us-west-2 替换为集群所在的 AWS 区域。

        AWS GovCloud(美国东部)

        sed -i.bak -e 's|us-west-2|us-gov-east-1|' aws-k8s-cni.yaml

        AWS GovCloud(美国西部)

        sed -i.bak -e 's|us-west-2|us-gov-west-1|' aws-k8s-cni.yaml

        所有其他 AWS 区域 – 将 region-code 替换为您的集群所在的 AWS 区域。

        sed -i.bak -e 's|us-west-2|region-code|' aws-k8s-cni.yaml
      2. 请将文件中的 602401143452 替换为集群所在的 AWS 区域。

        AWS GovCloud(美国东部)

        sed -i.bak -e 's|602401143452|151742754352|' aws-k8s-cni.yaml

        AWS GovCloud(美国西部)

        sed -i.bak -e 's|602401143452|013241004608|' aws-k8s-cni.yaml

        所有其他 AWS 区域 – 将 account 替换为您的集群所在 AWS 区域 的 Amazon 容器镜像注册表 中的值。

        sed -i.bak -e 's|602401143452|account|' aws-k8s-cni.yaml
    7. 如果您更改了当前 Amazon VPC CNI plugin for Kubernetes DaemonSet 的任何默认设置,则将新清单中的设置与您在上一步中创建的备份文件进行比较。

      diff aws-k8s-cni.yaml aws-k8s-cni-old.yaml -u

      编辑新的清单文件并更改任何设置值,以便它们与备份文件中的设置匹配。

    8. 将清单文件应用于集群。

      kubectl apply -f aws-k8s-cni.yaml
  4. 查看 DaemonSet 的状态。

    kubectl get daemonset aws-node -n kube-system

    输出示例如下。

    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE aws-node 2 2 2 2 2 <none> 4h39m

    一旦 READYUP-TO-DATEAVAILABLE 列中的数字相同,您的更新即完成。您的数字可能与前一个输出中的数字不同。

  5. 查看 DaemonSet 以确认您所做的更改。

    kubectl get daemonset aws-node -n kube-system -o yaml