更新 Amazon VPC CNI (Amazon EKS 附件元件) - Amazon EKS

協助改進此頁面

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

更新 Amazon VPC CNI (Amazon EKS 附件元件)

更新適用於 Kubernetes 的 Amazon VPC CNI 外掛程式附加元件的 Amazon EKS 類型。如果您尚未將 Amazon EKS 類型的附加元件新增至叢集,您可遵循 建立 Amazon VPC CNI (Amazon EKS 附加元件) 來安裝。或遵循 更新 Amazon VPC CNI (自我管理的附件元件) 來更新其他類型的 VPC CNI 安裝。

  1. 查看叢集上目前安裝了哪些附加元件版本。使用您的叢集名稱取代 my-cluster

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

    範例輸出如下。

    v1.20.0-eksbuild.1

    參照 Amazon VPC CNI 版本 中的最新版本資料表來比較版本。如果傳回的版本與最新版本資料表中的叢集 Kubernetes 版本相同,則表明您已經在叢集上安裝最新版本,不需要完成此程序的剩餘步驟。若您收到錯誤而非版本編號,則表明叢集上沒有安裝 Amazon EKS 類型的附加元件。您必須先建立附加元件,才能使用此程序進行更新。如需建立 VPC CNI 附加元件的 Amazon EKS 類型,您可遵循 建立 Amazon VPC CNI (Amazon EKS 附加元件)

  2. 儲存您目前安裝的附加元件。

    kubectl get daemonset aws-node -n kube-system -o yaml > aws-k8s-cni-old.yaml
  3. 使用 AWS CLI 更新您的附加元件。如果您想要使用 AWS 管理主控台 或 eksctl 更新附加元件,請參閱 更新 Amazon EKS 附加元件。將隨後的命令複製到您的裝置。視需要對命令進行下列修改,然後執行修改後的命令。

    • 使用您叢集的名稱取代 my-cluster

    • 使用叢集版本的最新版本資料表中列出的最新版本來取代 v1.20.0-eksbuild.1

    • 使用帳戶 ID 取代 111122223333,並且使用所建立現有 IAM 角色的名稱取代 AmazonEKSVPCCNIRole。如需針對 VPC CNI 建立 IAM 角色,請參閱 步驟 1:建立 Kubernetes 專用 Amazon VPC CNI 外掛程式 IAM 角色。若要指定角色,您的叢集需要具有 IAM OpenID Connect (OIDC) 提供者。若要判定您的叢集是否已經擁有一個提供者,或是要建立一個提供者,請參閱 為您的叢集建立 IAM OIDC 身分提供者

    • --resolve-conflicts PRESERVE 選項會保留附加元件的現有組態值。如果對於附加元件設定,您已設定自訂值,但未使用此選項,Amazon EKS 會以其預設值覆寫您的值。如果您使用此選項,建議您在更新生產叢集上的附加元件之前,測試非生產叢集上的任何欄位和值變更。如果您將此值變更為 OVERWRITE,則所有設定都會變更為 Amazon EKS 預設值。如果您已設定任何設定的自訂值,則可能會使用 Amazon EKS 預設值覆寫這些值。如果您將此值變更為 none,Amazon EKS 不會變更任何設定的值,但更新可能會失敗。若更新失敗,您會收到錯誤訊息,以協助您解決衝突。

    • 如果您不更新組態設定,請從命令中移除 --configuration-values '{"env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"}}'。如果您要更新組態設定,請將 "env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"} 取代為您要設定的設定值。在此範例中,AWS_VPC_K8S_CNI_EXTERNALSNAT 環境變數設定為 true。您指定的值必須對組態結構描述有效。若您不知道組態結構描述,請執行 aws eks describe-addon-configuration --addon-name vpc-cni --addon-version v1.20.0-eksbuild.1 ,其中請用要查看組態的附加元件版本編號取代 v1.20.0-eksbuild.1。結構描述會在輸出中傳回。如果您有任何現有的自訂組態,並且想要全部移除,同時將所有設定的值設定回 Amazon EKS 預設值,請從命令中移除 "env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"},這樣就會得到空白的 {}。如需每個設定的說明,請參閱 GitHub 上的 CNI 組態變數

      aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.20.1-eksbuild.3 \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole \ --resolve-conflicts PRESERVE --configuration-values '{"env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"}}'

      更新動作可能需要幾秒鐘的時間才能完成。

  4. 確認附加元件版本已更新。使用您叢集的名稱取代 my-cluster

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

    更新動作可能需要幾秒鐘的時間才能完成。

    範例輸出如下。

    { "addon": { "addonName": "vpc-cni", "clusterName": "my-cluster", "status": "ACTIVE", "addonVersion": "v1.20.1-eksbuild.3", "health": { "issues": [] }, "addonArn": "arn:aws:eks:region:111122223333:addon/my-cluster/vpc-cni/74c33d2f-b4dc-8718-56e7-9fdfa65d14a9", "createdAt": "2023-04-12T18:25:19.319000+00:00", "modifiedAt": "2023-04-12T18:40:28.683000+00:00", "serviceAccountRoleArn": "arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole", "tags": {}, "configurationValues": "{\"env\":{\"AWS_VPC_K8S_CNI_EXTERNALSNAT\":\"true\"}}" } }