管理 Amazon EKS 附加元件 - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。

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

管理 Amazon EKS 附加元件

Amazon EKS 附加元件是 Amazon EKS 叢集彙整的附加元件軟體集。所有 Amazon EKS 附加元件:

  • 包括最新的安全性修補程式和錯誤修正。

  • 通過 AWS 與 Amazon EKS 合作驗證。

  • 減少管理附加元件軟體所需的工作量。

當 Amazon EKS 附加元件有新版本可用時, AWS Management Console 會通知您。您只需啟動更新,Amazon EKS 會為您更新附加元件軟體。

如需可用附加元件的清單,請參閱 來自 Amazon EKS 的可用 Amazon EKS 附件元件。如需有關 Kubernetes 欄位管理的詳細資訊,請參閱 Kubernetes 欄位管理

必要條件

建立附加元件

您可以使用eksctl、或建立 Amazon EKS 附加元件。 AWS Management Console AWS CLI如果附加元件需要 IAM 角色,則請參閱 來自 Amazon EKS 的可用 Amazon EKS 附件元件 中特定附加元件的詳細資訊,以了解有關建立角色的詳細資訊。

eksctl
先決條件

已在裝置或 AWS CloudShell上安裝版本 0.183.0 或更新版本的 eksctl 命令列工具。如需有關安裝或更新 eksctl 的指示,請參閱 eksctl 文件中的安裝一節。

使用 eksctl 建立 Amazon EKS 附加元件
  1. 檢視叢集版本可用附加元件的名稱。使用您叢集的版本取代 1.30

    eksctl utils describe-addon-versions --kubernetes-version 1.30 | grep AddonName

    範例輸出如下。

    "AddonName": "aws-ebs-csi-driver",
                            "AddonName": "coredns",
                            "AddonName": "kube-proxy",
                            "AddonName": "vpc-cni",
                            "AddonName": "adot",
                            "AddonName": "dynatrace_dynatrace-operator",
                            "AddonName": "upbound_universal-crossplane",
                            "AddonName": "teleport_teleport",
                            "AddonName": "factorhouse_kpow",
                            [...]
  2. 檢視您想要建立之附加元件的可用版本。使用您叢集的版本取代 1.30。請使用您想要檢視其版本之附加元件的名稱取代 name-of-addon。名稱必須是之前步驟中傳回的其中一個名稱。

    eksctl utils describe-addon-versions --kubernetes-version 1.30 --name name-of-addon | grep AddonVersion

    下列輸出是針對名為 vpc-cni 的附加元件傳回的範例。您可以看到附加元件有數個可用版本。

    "AddonVersions": [
        "AddonVersion": "v1.12.0-eksbuild.1",
        "AddonVersion": "v1.11.4-eksbuild.1",
        "AddonVersion": "v1.10.4-eksbuild.1",
        "AddonVersion": "v1.9.3-eksbuild.1",
  3. 判斷您要建立的附加元件是 Amazon EKS 還是 AWS Marketplace 附加元件。 AWS Marketplace 具有第三方附加元件,需要您完成其他步驟才能建立附加元件。

    eksctl utils describe-addon-versions --kubernetes-version 1.30 --name name-of-addon | grep ProductUrl

    如果沒有傳回輸出,則該附加元件是 Amazon EKS。如果返回輸出,則該附加組件是一個 AWS Marketplace 附加組件。下列輸出適用於名為 teleport_teleport 的附加元件。

    "ProductUrl": "https://aws.amazon.com/marketplace/pp?sku=3bda70bb-566f-4976-806c-f96faef18b26"

    您可以在返回的 URL 中了解有關附加元件 AWS Marketplace 的更多資訊。如果附加元件需要訂閱,您可以透過 AWS Marketplace訂閱附加元件。如果您要從建立附加元件 AWS Marketplace,則您用來建立附加元件的 IAM 主體必須具有建立AWSServiceRoleForAWSLicenseManagerRole服務連結角色的權限。如需有關將許可指派給 IAM 實體的詳細資訊,請參閱《IAM 使用者指南》中的新增和移除 IAM 身分許可

  4. 建立 Amazon EKS 附加元件。將隨後的命令複製到您的裝置。視需要對命令進行下列修改,然後執行修改後的命令:

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

    • 使用您要建立之附加元件的名稱取代 name-of-addon

    • 如果您想要比最新版本更早的附加元件版本,請使用您要使用的上一步輸出中傳回的版本編號取代 latest

    • 如果附加元件使用服務帳戶角色,請使用您的帳戶 ID 取代 111122223333,並使用角色名稱取代 role-name。如需為您的服務帳戶建立角色的說明,請參閱您所建立之附加元件的文件。若要指定服務帳戶角色,您的叢集需要具有 IAM OpenID Connect (OIDC) 提供者。若要判定您的叢集是否已經擁有一個提供者,或是要建立一個提供者,請參閱 為您的叢集建立 IAM OIDC 提供者

      如果附加元件未使用服務帳戶角色,請刪除 --service-account-role-arn arn:aws:iam::111122223333:role/role-name

    • 此範例命令會覆寫任何現有自我管理附加元件版本的組態 (如果有的話)。如果您不想覆寫現有自我管理附加元件的組態,請移除 --force 選項。如果您移除該選項,並且 Amazon EKS 附加元件需要覆蓋現有自我管理附加元件的組態,則建立 Amazon EKS 附加元件的操作會失敗並會出現一條錯誤訊息,以幫助您解決衝突。指定此選項之前,請確定 Amazon EKS 附加元件未管理您需要管理的設定,因為這些設定會被此選項覆寫。

      eksctl create addon --cluster my-cluster --name name-of-addon --version latest \ --service-account-role-arn arn:aws:iam::111122223333:role/role-name --force

您可以查看該命令所有可用選項的清單。

eksctl create addon --help

如需有關可用選項的詳細資訊,請參閱 eksctl 文件中的 Addons (附加元件)。

AWS Management Console
若要建立 Amazon EKS 附加元件 AWS Management Console
  1. 在以下網址開啟 Amazon EKS 主控台:https://console.aws.amazon.com/eks/home#/clusters

  2. 在左側導覽窗格中,選取 Clusters (叢集),然後選取您要為其建立附加元件之叢集的名稱。

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

  4. 選擇取得更多附加元件

  5. 選擇您要新增至叢集的附加元件。您可以根據需要新增任意多個 Amazon EKS 附加元件AWS Marketplace 附加元件

    對於AWS Marketplace附加元件,您用來建立附加元件的 IAM 主體必須具有從中讀取附加元件的權利的 AWS LicenseManager權限。 AWS LicenseManager 需要AWSServiceRoleForAWSLicenseManagerRole服務連結角色 (SLR),以允許 AWS 資源代表您管理授權。SLR 是每個帳戶的一次性要求,您不必為每個附加元件或每個叢集建立單獨的 SLR。如需有關將許可指派給 IAM 主體的詳細資訊,請參閱《IAM 使用者指南》中的新增和移除 IAM 身分許可

    如果未列出您要安裝的 AWS Marketplace 附加元件,則您可以在搜尋方框中輸入文字來搜尋可用的附加元件。您也可以在篩選選項中,依類別廠商定價模式搜尋,然後從搜尋結果中選擇附加元件。選取您要安裝的附加元件後,請選擇 Next (下一步)。

  6. Configure selected add-ons settings (設定選取的附加元件設定) 頁面中:

    • 選擇檢視訂閱選項即可開啟訂閱選項表單。檢閱定價詳細資料法律區段,然後選擇訂閱按鈕以繼續。

    • 針對 Version (版本),選取您想要安裝的版本。除非您建立的個別附加元件建議使用不同的版本,否則我們建議您使用標記為最新的版本。若要判斷附加元件是否有建議的版本,請參閱您所建立之附加元件的文件

    • 如果您選取的所有附加元件在 Status (狀態) 下都有 Requires subscription (需要訂閱),請選取 Next (下一步)。在您建立叢集之後訂閱這些附加元件之前,您無法進一步設定這些附加元件。針對 Status (狀態) 下沒有 Requires subscription (需要訂閱) 的附加元件:

      • 針對 Select IAM role (選取 IAM 角色),請接受預設選項,除非附加元件需要 IAM 許可。如果附加元件需要 AWS 許可,您可以使用節點的 IAM 角色 (未設定) 或建立用於附加元件的現有角色。若沒有可選取的角色,則表示您沒有現有角色。無論您選擇哪個選項,請參閱您所建立之附加元件的文件,以建立 IAM 政策並將其附加到角色。若要選取 IAM 角色,您的叢集需要具有 IAM OpenID Connect (OIDC) 提供者。若要判定您的叢集是否已經擁有一個提供者,或是要建立一個提供者,請參閱 為您的叢集建立 IAM OIDC 提供者

      • 選擇 Optional configuration settings (選用組態設定)。

        • 如果附加元件需要組態,請在 Configuration values (組態值) 方塊中輸入。若要判斷附加元件是否需要組態資訊,請參閱您所建立之附加元件的文件

        • 對於 Conflict resolution method (衝突解決方法),請選取其中一個可用選項。

      • 選擇 Next (下一步)。

  7. 檢閱並新增頁面上,選擇建立。附加元件安裝完成後,您會看到已安裝的附加元件。

  8. 如果您安裝的任何附加元件需要訂閱,請完成下列步驟:

    1. 選擇附加元件右下角的 Subscribe (訂閱) 按鈕。系統將帶您前往 AWS Marketplace中附加元件的頁面。請閱讀附加元件的相關資訊,例如其產品概觀定價資訊

    2. 選取附加元件頁面右上方的 Continue to Subscribe (繼續訂閱) 按鈕。

    3. 請完整閱讀條款與條件。如果您同意,請選擇 Accept Terms (接受條款)。處理訂閱可能需要幾分鐘的時間。訂閱正在處理時,Return to Amazon EKS Console (返回至 Amazon EKS 主控台) 按鈕會呈現灰色。

    4. 訂閱完成處理後,Return to Amazon EKS Console (返回至 Amazon EKS 主控台) 按鈕將不再呈現灰色。選擇按鈕以返回叢集的 Amazon EKS 主控台 Add-ons (附加元件) 索引標籤。

    5. 針對您訂閱的附加元件,請選擇 Remove and reinstall (移除後重新安裝),然後選擇 Reinstall add-on (重新安裝附加元件)。安裝附加元件可能需要幾分鐘時間。安裝完成後,您可以設定附加元件。

AWS CLI
先決條件

您裝置上安裝和設定的 AWS Command Line Interface (AWS CLI) 的版本1.27.160或更新版本、版本或更新版本或更新版本或更新版本 AWS CloudShell。2.12.3若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。如 yumapt-get 或適用於 macOS 的 Homebrew 等套件管理工具通常比最新版本的 AWS CLI落後數個版本之多。若要安裝最新版本,請參閱《AWS Command Line Interface 使用者指南》中的安裝、更新和解除安裝 AWS CLI以及使用 aws configure 的快速組態。安裝在中的 AWS CLI 版本也 AWS CloudShell 可能是最新版本之後的幾個版本。若要進行更新,請參閱《AWS CloudShell 使用者指南》中的〈安裝 AWS CLI 到主目錄

若要建立 Amazon EKS 附加元件 AWS CLI
  1. 判斷有哪些附加元件可用。您可以查看所有可用的附加元件、其類型及其發佈者。您還可以透過 AWS Marketplace查看可用附加元件的 URL。使用您叢集的版本取代 1.30

    aws eks describe-addon-versions --kubernetes-version 1.30 \ --query 'addons[].{MarketplaceProductUrl: marketplaceInformation.productUrl, Name: addonName, Owner: owner Publisher: publisher, Type: type}' --output table

    範例輸出如下。

    ---------------------------------------------------------------------------------------------------------------------------------------------------------
    |                                                                 DescribeAddonVersions                                                                 |
    +---------------------------------------------------------------+-------------------------------+------------------+--------------+---------------------+
    |                     MarketplaceProductUrl                     |             Name              |      Owner       |  Publisher   |        Type         |
    +---------------------------------------------------------------+-------------------------------+------------------+--------------+---------------------+
    |  None                                                         |  aws-ebs-csi-driver           |  aws             |  eks         |  storage            |
    |  None                                                         |  coredns                      |  aws             |  eks         |  networking         |
    |  None                                                         |  kube-proxy                   |  aws             |  eks         |  networking         |
    |  None                                                         |  vpc-cni                      |  aws             |  eks         |  networking         |
    |  None                                                         |  adot                         |  aws             |  eks         |  observability      |
    |  https://aws.amazon.com/marketplace/pp/prodview-brb73nceicv7u |  dynatrace_dynatrace-operator |  aws-marketplace |  dynatrace   |  monitoring         |
    |  https://aws.amazon.com/marketplace/pp/prodview-uhc2iwi5xysoc |  upbound_universal-crossplane |  aws-marketplace |  upbound     |  infra-management   |
    |  https://aws.amazon.com/marketplace/pp/prodview-hd2ydsrgqy4li |  teleport_teleport            |  aws-marketplace |  teleport    |  policy-management  |
    |  https://aws.amazon.com/marketplace/pp/prodview-vgghgqdsplhvc |  factorhouse_kpow             |  aws-marketplace |  factorhouse |  monitoring         |
    |  [...]                                                        |  [...]                        |  [...]           |  [...]       |  [...]              |
    +---------------------------------------------------------------+-------------------------------+------------------+--------------+---------------------+

    您的輸出可能不同。在此範例輸出中,有三種不同 networking 類型的附加元件可用,以及五個具有 eks 類型發佈者的附加元件。Owner 欄位中具有 aws-marketplace 的附加元件可能需要訂閱才能安裝它們。您可以造訪 URL 以深入了解附加元件並訂閱該附加元件。

  2. 您可以查看每個附加元件可用的版本。使用您的叢集版本取代 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 的版本在預設情況下是用來建立附加元件的版本。

  3. (選用) 執行下列命令,尋找您所選附加元件的組態選項:

    aws eks describe-addon-configuration --addon-name vpc-cni --addon-version v1.12.0-eksbuild.1
    {
        "addonName": "vpc-cni",
        "addonVersion": "v1.12.0-eksbuild.1",
        "configurationSchema": "{\"$ref\":\"#/definitions/VpcCni\",\"$schema\":\"http://json-schema.org/draft-06/schema#\",\"definitions\":{\"Cri\":{\"additionalProperties\":false,\"properties\":{\"hostPath\":{\"$ref\":\"#/definitions/HostPath\"}},\"title\":\"Cri\",\"type\":\"object\"},\"Env\":{\"additionalProperties\":false,\"properties\":{\"ADDITIONAL_ENI_TAGS\":{\"type\":\"string\"},\"AWS_VPC_CNI_NODE_PORT_SUPPORT\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_ENI_MTU\":{\"format\":\"integer\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_CONFIGURE_RPFILTER\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_EXTERNALSNAT\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_LOGLEVEL\":{\"type\":\"string\"},\"AWS_VPC_K8S_CNI_LOG_FILE\":{\"type\":\"string\"},\"AWS_VPC_K8S_CNI_RANDOMIZESNAT\":{\"type\":\"string\"},\"AWS_VPC_K8S_CNI_VETHPREFIX\":{\"type\":\"string\"},\"AWS_VPC_K8S_PLUGIN_LOG_FILE\":{\"type\":\"string\"},\"AWS_VPC_K8S_PLUGIN_LOG_LEVEL\":{\"type\":\"string\"},\"DISABLE_INTROSPECTION\":{\"format\":\"boolean\",\"type\":\"string\"},\"DISABLE_METRICS\":{\"format\":\"boolean\",\"type\":\"string\"},\"DISABLE_NETWORK_RESOURCE_PROVISIONING\":{\"format\":\"boolean\",\"type\":\"string\"},\"ENABLE_POD_ENI\":{\"format\":\"boolean\",\"type\":\"string\"},\"ENABLE_PREFIX_DELEGATION\":{\"format\":\"boolean\",\"type\":\"string\"},\"WARM_ENI_TARGET\":{\"format\":\"integer\",\"type\":\"string\"},\"WARM_PREFIX_TARGET\":{\"format\":\"integer\",\"type\":\"string\"}},\"title\":\"Env\",\"type\":\"object\"},\"HostPath\":{\"additionalProperties\":false,\"properties\":{\"path\":{\"type\":\"string\"}},\"title\":\"HostPath\",\"type\":\"object\"},\"Limits\":{\"additionalProperties\":false,\"properties\":{\"cpu\":{\"type\":\"string\"},\"memory\":{\"type\":\"string\"}},\"title\":\"Limits\",\"type\":\"object\"},\"Resources\":{\"additionalProperties\":false,\"properties\":{\"limits\":{\"$ref\":\"#/definitions/Limits\"},\"requests\":{\"$ref\":\"#/definitions/Limits\"}},\"title\":\"Resources\",\"type\":\"object\"},\"VpcCni\":{\"additionalProperties\":false,\"properties\":{\"cri\":{\"$ref\":\"#/definitions/Cri\"},\"env\":{\"$ref\":\"#/definitions/Env\"},\"resources\":{\"$ref\":\"#/definitions/Resources\"}},\"title\":\"VpcCni\",\"type\":\"object\"}}}"
    }

    輸出是標準的 JSON 結構描述。

    以下是適用於上述結構描述的有效組態值 (以 JSON 格式) 範例。

    {
      "resources": {
        "limits": {
          "cpu": "100m"
        }
      }
    }

    以下是適用於上述結構描述的有效組態值 (以 YAML 格式) 範例。

      resources: 
        limits: 
          cpu: 100m    
  4. 判斷附加元件是否需要 IAM 許可。如果是這樣,您需要 (1) 判斷是否要針對服務帳戶使用 EKS 網繭身分或 IAM 角色 (IRSA),(2) 決定要與附加元件搭配使用之 IAM 角色的 ARN,以及 (3) 決定附加元件使用的 Kubernetes 服務帳戶的名稱。您可以在文件中或使用 AWS API 找到此資訊,請參閱擷取附加元件的 IAM 資訊

  5. 建立 Amazon EKS 附加元件。將隨後的命令複製到您的裝置。視需要對命令進行下列修改,然後執行修改後的命令:

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

    • 使用您想要建立之上一步輸出中傳回的附加元件名稱取代 vpc-cni

    • 使用您想要使用之上一步輸出中傳回的版本取代 version-number

    • 如果附加元件不需要 IAM 許可,請刪除<service-account-configuration>

    • 如果附加元件 (1) 需要 IAM 許可,且 (2) 您的叢集使用 EKS Pod 身分識別,請以下列網繭身分識別關聯取代<service-account-configuration>。替換<service-account-name>為附加元件使用的服務帳戶名稱。<role-arn>以 IAM 角色的 ARN 取代。角色必須具有 EKS 網繭識別所需的信任原則。

      • --pod-identity-associations 'serviceAccount=<service-account-name>,roleArn=<role-arn>'
    • 如果附加元件 (1) 需要 IAM 許可,且 (2) 您的叢集使用 IRSA,請以下列 IRSA 組態取代<service-account-configuration>。以您111122223333的帳戶 ID 和role-name您已建立的現有 IAM 角色名稱取代。如需建立角色的說明,請參閱您所建立之附加元件的文件。若要指定服務帳戶角色,您的叢集需要具有 IAM OpenID Connect (OIDC) 提供者。若要判定您的叢集是否已經擁有一個提供者,或是要建立一個提供者,請參閱 為您的叢集建立 IAM OIDC 提供者

      • --service-account-role-arn arn:aws:iam::111122223333:role/role-name
    • 這些範例命令會覆寫任何現有自我管理附加元件版本的 --configuration-values 選項 (如果有的話)。將其取代為所需的組態值,例如字串或檔案輸入。如果您不想提供組態值,請刪除 --configuration-values 選項。如果您不想覆寫現有自我管理附加元件的組態,請移除該--resolve-conflicts OVERWRITE選項。 AWS CLI 如果您移除該選項,並且 Amazon EKS 附加元件需要覆蓋現有自我管理附加元件的組態,則建立 Amazon EKS 附加元件的操作會失敗並會出現一條錯誤訊息,以幫助您解決衝突。指定此選項之前,請確定 Amazon EKS 附加元件未管理您需要管理的設定,因為這些設定會被此選項覆寫。

    aws eks create-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version version-number \ <service-account-configuration> --configuration-values '{"resources":{"limits":{"cpu":"100m"}}}' --resolve-conflicts OVERWRITE
    aws eks create-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version version-number \ <service-account-configuration> --configuration-values 'file://example.yaml' --resolve-conflicts OVERWRITE

    如需可用選項的完整清單,請參閱 Amazon EKS Command Line Reference (《Amazon EKS 命令列參考》) 中的 create-addon如果您建立的附加元件有 aws-marketplace 列在上一步的 Owner 欄位中,則建立操作可能會失敗,而且您可能會收到類似下列錯誤的錯誤訊息。

    { "addon": { "addonName": "addon-name", "clusterName": "my-cluster", "status": "CREATE_FAILED", "addonVersion": "version", "health": { "issues": [ { "code": "AddonSubscriptionNeeded", "message": "You are currently not subscribed to this add-on. To subscribe, visit the AWS Marketplace console, agree to the seller EULA, select the pricing type if required, then re-install the add-on" [...]

    如果您收到類似上一個輸出中之錯誤的錯誤,請造訪上一步輸出中的 URL,以訂閱附加元件。訂閱後,再次執行 create-addon 命令。

更新附加元件

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

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

eksctl
先決條件

已在裝置或 AWS CloudShell上安裝版本 0.183.0 或更新版本的 eksctl 命令列工具。如需有關安裝或更新 eksctl 的指示,請參閱 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 角色,請使用您的帳戶 ID 取代 111122223333,並使用您已建立的現有 IAM 角色的名稱取代 role-name。如需建立角色的說明,請參閱您所建立之附加元件的文件。若要指定服務帳戶角色,您的叢集需要具有 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 文件中的 Addons (附加元件)。

AWS Management Console
若要使用更新 Amazon EKS 附加元件 AWS Management Console
  1. 在以下網址開啟 Amazon EKS 主控台:https://console.aws.amazon.com/eks/home#/clusters

  2. 在左側導覽窗格中,選取 Clusters (叢集),然後選取您要為其設定附加元件之叢集的名稱。

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

  4. 選取附加元件方塊右上方的方塊,然後選擇 Edit (編輯)。

  5. Configure name of addon (設定 name of addon) 頁面中:

    • 選取您要使用的 Version (版本)。附加元件可能有建議的版本。如需詳細資訊,請參閱您所更新之附加元件的文件

    • 對於選取 IAM 角色,您可以使用節點的 IAM 角色 (未設定) 或建立用於附加元件的現有角色。若沒有可選取的角色,則表示您沒有現有角色。無論您選擇哪個選項,請參閱您所建立之附加元件的文件,以建立 IAM 政策並將其附加到角色。若要選取 IAM 角色,您的叢集需要具有 IAM OpenID Connect (OIDC) 提供者。若要判定您的叢集是否已經擁有一個提供者,或是要建立一個提供者,請參閱 為您的叢集建立 IAM OIDC 提供者

    • 對於 Code editor,輸入任何附加元件特定組態資訊。如需詳細資訊,請參閱您所更新之附加元件的文件

    • 對於 Conflict resolution method (衝突解決方法),請選取其中一個選項。如果您已設定附加元件設定的自訂值,我們建議您使用 Preserve (保留) 選項。如果您不選擇此選項,Amazon EKS 會以其預設值覆寫您的值。如果您使用此選項,建議您在更新生產叢集上的附加元件之前,測試非生產叢集上的任何欄位和值變更。

  6. 選擇 Update (更新)。

AWS CLI
先決條件

您裝置上安裝和設定的 AWS Command Line Interface (AWS CLI) 的版本1.27.160或更新版本、版本或更新版本或更新版本或更新版本 AWS CloudShell。2.12.3若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。如 yumapt-get 或適用於 macOS 的 Homebrew 等套件管理工具通常比最新版本的 AWS CLI落後數個版本之多。若要安裝最新版本,請參閱《AWS Command Line Interface 使用者指南》中的安裝、更新和解除安裝 AWS CLI以及使用 aws configure 的快速組態。安裝在中的 AWS CLI 版本也 AWS CloudShell 可能是最新版本之後的幾個版本。若要進行更新,請參閱《AWS CloudShell 使用者指南》中的〈安裝 AWS CLI 到主目錄

若要使用更新 Amazon EKS 附加元件 AWS CLI
  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. 更新您的附加元件。將隨後的命令複製到您的裝置。視需要對命令進行下列修改,然後執行修改後的命令。

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

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

    • 使用您想要更新之上一步輸出中傳回的版本取代 version-number。某些附加元件有建議的版本。如需詳細資訊,請參閱您所更新之附加元件的文件

    • 如果附加元件使用 Kubernetes 服務帳戶和 IAM 角色,請使用您的帳戶 ID 取代 111122223333,並使用您已建立的現有 IAM 角色的名稱取代 role-name。如需建立角色的說明,請參閱您所建立之附加元件的文件。若要指定服務帳戶角色,您的叢集需要具有 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 旗標。如果您要調整自訂組態,請使用新參數取代 {}。若要查看參數清單,請參閱「建立附加元件」一節中的 viewing configuration schema (檢視組態結構描述) 步驟。

    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 時,即表示更新已完成。

刪除附加元件

當您刪除 Amazon EKS 附加元件時:

  • 此附加元件提供的功能沒有任何停機時間。

  • 如果您使用服務帳戶的 IAM 角色 (IRSA),且附加元件具有與其相關聯的 IAM 角色,則不會移除 IAM 角色。

  • 如果您使用的是網繭識別,則會刪除附加元件擁有的任何網繭身分識別相關聯程式。如果您將選--preserve項指定給 AWS CLI,則會保留相關聯。

  • Amazon EKS 停止管理附加元件的設定。

  • 當有新版本可用時,主控台會停止通知您。

  • 您無法使用任何 AWS 工具或 API 更新附加元件。

  • 您可以選擇將附加元件軟體保留在叢集上,以便您可以自我管理附加元件軟體,或從叢集中移除附加元件軟體。如果您的叢集上的任何資源都不依賴於附加元件提供的功能,您應該僅從叢集中移除附加元件軟體。

您可以使用 eksctl、 AWS Management Console或 AWS CLI從您的叢集中刪除 Amazon EKS 附加元件。

eksctl
先決條件

已在裝置或 AWS CloudShell上安裝版本 0.183.0 或更新版本的 eksctl 命令列工具。如需有關安裝或更新 eksctl 的指示,請參閱 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 vpc-cni v1.10.4-eksbuild.1 ACTIVE 0 [...]

    您的輸出可能看起來有所不同,具體取決於您的叢集上有哪些附加元件和版本。

  2. 刪除附加元件。使用叢集名稱取代 my-cluster,並使用您想要移除之上一步輸出中傳回的附加元件名稱取代 name-of-add-on。若移除 --preserve 選項,除了 Amazon EKS 不再管理附加元件之外,附加元件軟體也會從叢集中移除。

    eksctl delete addon --cluster my-cluster --name name-of-addon --preserve
AWS Management Console
若要使用刪除 Amazon EKS 附加元件 AWS Management Console
  1. 在以下網址開啟 Amazon EKS 主控台:https://console.aws.amazon.com/eks/home#/clusters

  2. 在左側導覽窗格中,選取 Clusters (叢集),然後選取您要為其移除 Amazon EKS 附加元件之叢集的名稱。

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

  4. 勾選附加元件方塊右上方的核取方塊,然後選擇 Remove (移除)。如果您希望 Amazon EKS 停止管理附加元件的設定,但想要在叢集上保留附加元件軟體,以便您可以自我管理附加元件的所有設定,請選取 Preserve on the cluster (在叢集上保留)。輸入附加元件名稱,然後選取 Remove (移除)。

AWS CLI
先決條件

已在裝置或 AWS CloudShell上安裝版本 0.183.0 或更新版本的 eksctl 命令列工具。如需有關安裝或更新 eksctl 的指示,請參閱 eksctl 文件中的安裝一節。

若要使用刪除 Amazon EKS 附加元件 AWS CLI
  1. 請參閱已安裝附加元件的清單。使用您叢集的名稱取代 my-cluster

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

    範例輸出如下。

    { "addons": [ "coredns", "kube-proxy", "vpc-cni", "name-of-addon" ] }
  2. 刪除已安裝的附加元件。請使用叢集名稱取代 my-cluster 並使用您想要移除之附加元件的名稱取代 name-of-add-on。移除 --preserve 會將附加元件軟體從叢集中移除。

    aws eks delete-addon --cluster-name my-cluster --addon-name name-of-addon --preserve

    縮寫的範例輸出如下所示。

    { "addon": { "addonName": "name-of-add-on", "clusterName": "my-cluster", "status": "DELETING", [...]
  3. 檢查刪除狀態。請使用叢集名稱取代 my-cluster 並使用您所移除之附加元件的名稱取代 name-of-addon

    aws eks describe-addon --cluster-name my-cluster --addon-name name-of-addon

    刪除附加元件後,範例輸出如下所示。

    An error occurred (ResourceNotFoundException) when calling the DescribeAddon operation: No addon: name-of-addon found in cluster: my-cluster

檢索插件版本兼容性

使用 describe-addon-verisionsAPI 列出 EKS 外掛程式的可用版本,以及每個附加元件版本支援的 Kubernetes 版本。

檢索插件版本兼容性()AWS CLI
  1. 驗證 AWS CLI 是否已安裝並使用aws sts get-caller-identity。如果此命令不起作用,請了解如何開始使用 AWS CLI.

  2. 決定您要擷取版本相容性資訊的附加元件名稱,例如amazon-cloudwatch-observability

  3. 判斷叢集的 Kubernetes 版本,例如。1.28

  4. 使用擷 AWS CLI 取與叢集的 Kubernetes 版本相容的附加元件版本。

    aws eks describe-addon-versions --addon-name amazon-cloudwatch-observability --kubernetes-version 1.29

    範例輸出如下。

    { "addons": [ { "addonName": "amazon-cloudwatch-observability", "type": "observability", "addonVersions": [ { "addonVersion": "v1.5.0-eksbuild.1", "architecture": [ "amd64", "arm64" ], "compatibilities": [ { "clusterVersion": "1.28", "platformVersions": [ "*" ], "defaultVersion": true } ], [...]

    此輸出顯示附加元件版本v1.5.0-eksbuild.1與 Kubernetes 叢集版本相容。1.28