更新 Amazon EKS 附加元件 - Amazon EKS

協助改善此頁面

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

若要提供此使用者指南,請選擇位於每個頁面右窗格中的 GitHub 上編輯此頁面連結。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

更新 Amazon EKS 附加元件

新版本發行時,或將叢集更新為新的 Kubernetes 次要版本後,Amazon EKS 不會自動更新附加元件。若要更新現有叢集的附加元件,您必須啟動更新。在您啟動更新後,Amazon EKS 會為您更新附加元件。在更新附加元件之前,請檢閱附加元件目前的文件。如需可用附加元件的清單,請參閱 AWS 附加元件。如果附加元件需要 IAM 角色,請參閱 的可用 Amazon EKS 附加元件中特定附加元件 AWS的詳細資訊,以取得建立角色的詳細資訊。

先決條件

在建立附加元件之前,請先完成下列操作:

程序

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

更新附加元件 (eksctl)

  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 取代為您要更新之上一個步驟的輸出中傳回的附加元件名稱。

      • 如果您想要更新至比最新可用版本更早的版本,請將最新版本取代為上一個步驟的輸出中傳回的版本編號。某些附加元件有建議的版本。如需詳細資訊,請參閱您要更新之附加元件的文件。如需附加元件的清單,請參閱 AWS 附加元件* 如果附加元件使用 Kubernetes 服務帳戶和 IAM 角色,請將 111122223333 取代為您建立的現有 IAM 角色名稱的帳戶 ID 和角色名稱。如需建立角色的說明,請參閱您要建立之附加元件的文件。如需附加元件的清單,請參閱 AWS 附加元件。指定服務帳戶角色需要您擁有叢集的 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 文件中的更新附加元件

更新附加元件AWS (主控台)

  1. 開啟 Amazon EKS 主控台

  2. 在左側導覽窗格中選擇叢集

  3. 選擇您要更新附加元件的叢集名稱。

  4. 選擇附加元件索引標籤。

  5. 選擇您要更新的附加元件。

  6. 選擇編輯

  7. 設定附加元件名稱頁面上,執行下列動作:

    1. 選擇您要使用的版本。附加元件可能有建議的版本。如需詳細資訊,請參閱您要更新之附加元件的文件。如需附加元件的清單,請參閱AWS 附加元件

    2. 您有兩個設定附加元件角色的選項:EKS Pod 身分服務帳戶 (IRSA) 的 IAM 角色和 IAM 角色。請遵循以下適當的步驟,以取得您偏好的選項。如果您選取的所有附加元件在狀態下都需要訂閱,請選擇下一步。對於狀態下沒有需要訂閱的附加元件,請執行下列動作:

      1. 對於服務帳戶的 Pod Identity IAM 角色,您可以使用現有的 EKS Pod Identity IAM 角色,或使用建立建議角色按鈕建立角色。此欄位只會提供具有適當信任政策的選項。如果沒有要選取的角色,則表示您沒有具有相符信任政策的現有角色。若要為所選附加元件的服務帳戶設定 EKS Pod Identity IAM 角色,請選擇建立建議的角色。角色建立精靈會在單獨的視窗中開啟。精靈會自動填入角色資訊,如下所示。針對您要建立 EKS Pod Identity IAM 角色的每個附加元件,完成 IAM 精靈中的步驟,如下所示。

        • 選取信任實體步驟中,EKS AWS 的服務選項和 EKS - Pod Identity 的使用案例會預先選取,且會自動填入附加元件的適當信任政策。例如,將使用包含 pods.eks.amazonaws.com IAM Principal 的適當信任政策來建立角色,如 中所述EKS Pod 身分識別的優勢。選擇 Next (下一步)

        • 新增許可步驟中,針對 附加元件預先選取角色政策的適當受管政策。例如,對於 Amazon VPC CNI 附加元件,將使用 AmazonEKS_CNI_Policy 中詳述的受管政策來建立角色Kubernetes 專用 Amazon VPC CNI 外掛程式。選擇 Next (下一步)

        • 名稱、檢閱和建立步驟中,在角色名稱中,會自動填入附加元件的預設角色名稱。例如,對於 Amazon VPC CNI 附加元件,將使用名稱 AmazonEKSPodIdentityAmazonVPCCNIRole 建立角色。在描述中,預設描述會自動填入附加元件的適當描述。例如,對於 Amazon VPC CNI 附加元件,將使用描述建立角色 允許在 Amazon EKS 叢集中執行的 Pod 存取 AWS 資源。在信任政策中,檢視附加元件的填入信任政策。選擇建立角色

          注意

          保留預設角色名稱可讓 EKS 在新叢集中或將附加元件新增至現有叢集時預先選取附加元件的角色。您仍然可以覆寫此名稱,而角色將可用於叢集的附加元件,但需要從下拉式清單中手動選取角色。

      2. 對於狀態下不需要訂閱的附加元件,以及您要使用 IRSA 設定角色的位置,請參閱您要建立的附加元件文件,以建立 IAM 政策並將其連接至角色。如需附加元件的清單,請參閱 AWS 附加元件。選取 IAM 角色需要您擁有叢集的 IAM OpenID Connect (OIDC) 提供者。若要判定您的叢集是否已經擁有一個提供者,或是要建立一個提供者,請參閱 為您的叢集建立 IAM OIDC 身分提供者

    3. 展開選用組態設定

    4. 組態值中,輸入任何附加元件特定的組態資訊。如需詳細資訊,請參閱您要更新之附加元件的文件。如需附加元件的清單,請參閱「AWS 附加元件」「衝突解決方法」,請選取其中一個選項。如果您已設定附加元件設定的自訂值,我們建議您使用 Preserve (保留) 選項。如果您不選擇此選項,Amazon EKS 會使用其預設值覆寫您的值。如果您使用此選項,建議您在更新生產叢集上的附加元件之前,測試非生產叢集上的任何欄位和值變更。如果您將此值變更為覆寫,所有設定都會變更為 Amazon EKS 預設值。如果您已為任何設定設定自訂值,這些值可能會以 Amazon EKS 預設值覆寫。如果您將此值變更為無,Amazon EKS 不會變更任何設定的值,但更新可能會失敗。若更新失敗,您會收到錯誤訊息,以協助您解決衝突。

  8. 選擇 Save changes (儲存變更)。

更新附加元件 (AWS CLI)

  1. 您需要在裝置2.12.3或 AWS CloudShell 上安裝和設定 或更新版本1.27.160的 AWS 命令列界面 (AWS CLI)。若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。適用於 macOS 的 yumapt-get或 Homebrew 等套件管理員通常是最新版本 CLI AWS 後面的幾個版本。若要安裝最新版本,請參閱《 AWS 命令列界面使用者指南》中的使用 aws 設定安裝 和 Quick configuration。 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config安裝在 AWS CloudShell 中的 AWS CLI 版本也可能是最新版本後面的幾個版本。若要更新它,請參閱 CloudShell AWS 使用者指南中的將 CLI 安裝到您的主目錄 AWS CloudShell

  2. 請參閱已安裝附加元件的清單。使用您叢集的名稱取代 my-cluster

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

    範例輸出如下。

    { "addons": [ "coredns", "kube-proxy", "vpc-cni" ] }
  3. 檢視您想要更新之附加元件的目前版本。將 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
  4. 判斷叢集版本可用的附加元件版本。將 1.32 取代為叢集的版本,並將 vpc-cni 取代為您要更新的附加元件名稱。

    aws eks describe-addon-versions --kubernetes-version 1.32 --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 的版本在預設情況下是用來建立附加元件的版本。

  5. 更新您的附加元件。將隨後的命令複製到您的裝置。視需要對命令進行下列修改,然後執行修改後的命令。如需此命令的詳細資訊,請參閱《Amazon EKS 命令列參考》中的 update-addon

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

    • vpc-cni 取代為您要更新的附加元件名稱,該附加元件在上一個步驟的輸出中傳回。

    • 版本編號取代為您要更新之上一個步驟輸出中傳回的版本。某些附加元件有建議的版本。如需詳細資訊,請參閱您要更新之附加元件的文件。如需附加元件的清單,請參閱 AWS 附加元件* 如果附加元件使用 Kubernetes 服務帳戶和 IAM 角色,請將 111122223333 取代為您建立的現有 IAM 角色名稱的帳戶 ID 和角色名稱。如需建立角色的說明,請參閱您要建立之附加元件的文件。如需附加元件的清單,請參閱 AWS 附加元件。指定服務帳戶角色需要您擁有叢集的 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
  6. 查看更新狀態。將 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 時,即表示更新已完成。