更新 Amazon EKS 附加元件 - Amazon EKS

協助改進此頁面

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

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

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

更新 Amazon EKS 附加元件

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

先決條件

請完成以下操作再建立附加元件:

程序

您可以使用 eksctl、 AWS 管理主控台或 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

      • 如果您想要更新為比最新可用版本更早的版本,請使用您要使用的上一步輸出中傳回的版本編號取代 latest。某些附加元件有建議的版本。如需詳細資訊,請參閱您所更新之附加元件的文件。若要獲取附加元件清單,請參閱 AWS 附加元件* 若附加元件使用 Kubernetes 服務帳戶和 IAM 角色,請使用您的帳戶 ID 取代 111122223333,並使用您已建立的現有 IAM 角色的名稱取代 role-name。如需建立角色的說明,請參閱您所建立之附加元件的文件。若要獲取附加元件清單,請參閱 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 身分識別 IAM 角色及服務帳戶 (IRSA) 的 IAM 角色。根據您喜好的選項,遵循下列適當步驟。如果您選取的所有附加元件在狀態下都有需要訂閱,請選擇下一步。針對狀態下沒有需要訂閱的附加元件,請執行以下操作:

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

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

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

        • 命名、檢閱及建立步驟中,角色名稱會自動填入附加元件的預設角色名稱。舉例來說,針對 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. 選擇儲存變更

更新附加元件 (AWS CLI)

  1. 您需要在裝置或 AWS CloudShell 上安裝和設定版本 2.12.3或更新版本或版本 1.27.160或更新版本的 AWS 命令列界面 (AWS CLI)。若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。適用於 macOS 的 yumapt-get或 Homebrew 等套件管理員通常是最新版本 CLI AWS 後面的幾個版本。若要安裝最新版本,請參閱《 AWS 命令列界面使用者指南》中的使用 aws 設定安裝 和快速組態。 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.33 並使用您想要更新之附加元件的名稱取代 vpc-cni

    aws eks describe-addon-versions --kubernetes-version 1.33 --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,該名稱在上一步輸出中傳回。

    • 使用您想要更新之上一步輸出中傳回的版本取代 version-number。某些附加元件有建議的版本。如需詳細資訊,請參閱您所更新之附加元件的文件。若要獲取附加元件清單,請參閱 AWS 附加元件* 若附加元件使用 Kubernetes 服務帳戶和 IAM 角色,請使用您的帳戶 ID 取代 111122223333,並使用您已建立的現有 IAM 角色的名稱取代 role-name。如需建立角色的說明,請參閱您所建立之附加元件的文件。若要獲取附加元件清單,請參閱 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 時,即表示更新已完成。