建立 Amazon EKS 附加元件 - Amazon EKS

協助改善此頁面

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

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

建立 Amazon EKS 附加元件

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

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

  • 經過 驗證 AWS ,可與 Amazon 搭配使用EKS。

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

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

必要條件

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

程序

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

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

    eksctl utils describe-addon-versions --kubernetes-version 1.31 | 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.31。請使用您想要檢視其版本之附加元件的名稱取代 name-of-addon。名稱必須是上一個步驟中傳回的名稱之一。

    eksctl utils describe-addon-versions --kubernetes-version 1.31 --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.31 --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"

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

  4. 建立 Amazon EKS 附加元件。複製命令並取代 user-data 命中率:

    • 使用您叢集的名稱取代 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. 開啟位於 https://console.aws.amazon.com/eks/home#/clusters 的 Amazon EKS主控台。

  2. 在左側導覽窗格中選擇 Clusters (叢集)。

  3. 選擇您要為其建立附加元件的叢集名稱。

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

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

  6. Select add-ons (選取附加元件) 頁面上,選擇您要新增至叢集的附加元件。您可以視需要新增任意數量的 Amazon EKS附加元件AWS Marketplace 附加元件

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

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

  7. 設定選取的附加元件設定頁面上,執行以下操作:

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

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

    3. 如果您選取的所有附加元件在狀態 下都需要訂閱,請選擇下一個 。在您建立叢集之後訂閱這些附加元件之前,您無法進一步設定這些附加元件。對於狀態 下不需要訂閱的附加元件,請執行下列操作:

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

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

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

      4. 選擇衝突解決方法 的其中一個可用選項。如果您選擇覆寫衝突解析方法 ,則可以使用 Amazon 附加元件設定覆寫現有EKS附加元件的一個或多個設定。若未啟用此選項,而且有設定與現有設定發生衝突,則操作會失敗。您可以使用產生的錯誤訊息對此衝突進行疑難排解。選擇此選項之前,請確定 Amazon EKS 附加元件不會管理自我管理所需的設定。

      5. 選擇 Next (下一步)

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

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

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

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

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

    4. 一旦訂閱處理完成,返回 Amazon EKS主控台按鈕將不再變成灰色。選擇 按鈕以返回叢集的 Amazon EKS主控台附加元件索引標籤。

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

AWS CLI
先決條件

在您的裝置或 上安裝和設定的 1.27.160 AWS Command Line Interface (AWS CLI) 版本 2.12.3或更新版本 AWS CloudShell。若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。套件管理員yum,例如 apt-get、 或 Homebrew for macOS 通常是最新版本 後面的幾個版本 AWS CLI。若要安裝最新版本,請參閱使用 安裝、更新和解除安裝 AWS CLI快速組態 aws configure (在 AWS Command Line Interface 使用者指南中) 安裝在 中的 AWS CLI 版本 AWS CloudShell 也可能是最新版本後面的幾個版本。若要更新它,請參閱 AWS CloudShell 使用者指南 中的安裝 AWS CLI 到您的主目錄

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

    aws eks describe-addon-versions --kubernetes-version 1.31 \ --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.31,並使用上一步傳回的附加元件名稱取代 vpc-cni

    aws eks describe-addon-versions --kubernetes-version 1.31 --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 Pod 身分或IAM角色用於服務帳戶 (IRSA)、(2) 判斷IAM要與附加元件搭配使用ARN的角色,以及 (3) 判斷附加元件使用的 Kubernetes 服務帳戶名稱。如需詳細資訊,請參閱擷取有IAM關 Amazon EKS 附加元件的資訊

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

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

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

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

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

    • 執行以下任意一項:

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

        --pod-identity-associations 'serviceAccount=<service-account-name>,roleArn=<role-arn>'
      • 如果附加元件 (1) 需要IAM許可,且 (2) 您的叢集使用 IRSA,<service-account-configuration>請使用下列IRSA組態取代 。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 選項。如果您不希望 AWS CLI 覆寫現有自我管理附加元件的組態,請移除 --resolve-conflicts OVERWRITE選項。如果您移除 選項,且 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 參考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 命令。