協助改善此頁面
想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
創建一個 Amazon EKS 插件
Amazon EKS 附加組件是 Amazon EKS 集群的附加軟件。所有 Amazon EKS 附加組件
-
包括最新的安全性修補程式和錯誤修正。
-
通過與 Amazon AWS 合作驗證EKS。
-
減少管理附加軟體所需的工作量。
您可以使用eksctl
、或建立 Amazon EKS 附加元件 AWS CLI。 AWS Management Console如果附加元件需要IAM角色,請參閱中特定附加元件的詳細資料,以Amazon EKS 插件取得有關建立角色的詳細資訊。
必要條件
建立附加元件之前,請先完成下列步驟:
-
您必須先存在叢集,才能為其建立附加元件。如需詳細資訊,請參閱創建一個 Amazon EKS 群集。
-
檢查您的附加元件是否需要IAM角色。如需詳細資訊,請參閱驗證 Amazon EKS 附加元件版本與叢集的相容性。
-
確認 Amazon EKS 附加元件版本與您的叢集相容。如需詳細資訊,請參閱驗證 Amazon EKS 附加元件版本與叢集的相容性。
-
確認您的電腦或安裝了 0.189.0 或更新版本的
eksctl
命令列工具。 AWS CloudShell如需詳細資訊,請參閱eksctl
網站文章安裝。
程序
您可以使用eksctl
、或建立 Amazon EKS 附加元件 AWS CLI。 AWS Management Console如果附加元件需要IAM角色,請參閱中特定附加元件的詳細資料,以可從 Amazon EKS 附加組件 AWS取得有關建立角色的詳細資訊。
- eksctl
-
若要使用建立 Amazon EKS 附加元件
eksctl
-
檢視叢集版本可用附加元件的名稱。使用您叢集的版本取代
。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", [...]
-
檢視您想要建立之附加元件的可用版本。使用您叢集的版本取代
。請使用您想要檢視其版本之附加元件的名稱取代1.30
。名稱必須是上一個步驟中傳回的其中一個名稱。name-of-addon
eksctl utils describe-addon-versions --kubernetes-version
1.30
--namename-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",
-
判斷您要建立的附加元件是 Amazon EKS 還是 AWS Marketplace 附加元件。 AWS Marketplace 具有第三方附加元件,需要您完成其他步驟才能建立附加元件。
eksctl utils describe-addon-versions --kubernetes-version
1.30
--namename-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身分識別權限。
-
創建一個 Amazon EKS 插件。複製指令並取代
user-data
命中率:-
使用您叢集的名稱取代
。my-cluster
-
使用您要建立之附加元件的名稱取代
。name-of-addon
-
如果您想要比最新版本更早的附加元件版本,請使用您要使用的上一步輸出中傳回的版本編號取代
。latest
-
如果附加元件使用服務帳戶角色,請使用您的帳戶 ID 取代
,並使用角色名稱取代111122223333
。如需為您的服務帳戶建立角色的說明,請參閱您所建立之附加元件的文件。若要指定服務帳戶角色,叢集需要 IAM OpenID Connect (OIDC) 提供者。若要判定您的叢集是否已經擁有一個提供者,或是要建立一個提供者,請參閱 為您的叢集建立IAMOIDC提供者。role-name
如果附加元件未使用服務帳戶角色,請刪除
。
arn:aws:iam::--service-account-role-arn
111122223333
:role/
role-name
-
此範例命令會覆寫任何現有自我管理附加元件版本的組態 (如果有的話)。如果您不想覆寫現有自我管理附加元件的組態,請移除
選項。如果您移除該選項,且 Amazon EKS 附加元件需要覆寫現有自我管理附加元件的組態,則建立 Amazon EKS 附加元件會失敗,並顯示錯誤訊息以協助您解決衝突。在指定此選項之前,請確定 Amazon EKS 附加元件不會管理您需要管理的設定,因為這些設定會被此選項覆寫。--force
eksctl create addon --cluster
my-cluster
--namename-of-addon
--versionlatest
\--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
在https://console.aws.amazon.com/eks/家裡 #
/集群打開 Amazon EKS 控制台。 -
在左側導覽窗格中選擇 Clusters (叢集)。
-
選擇您要為其建立附加元件的叢集名稱。
-
選擇附加元件索引標籤。
-
選擇取得更多附加元件。
-
在 Select add-ons (選取附加元件) 頁面上,選擇您要新增至叢集的附加元件。您可以根據需要添加任意數量的 Amazon EKS AWS Marketplace 附加組件和附加組件。
對於AWS Marketplace附加元件,您用來建立附加元件的IAM主體必須具有讀取附加元件之權利的權限。 AWS LicenseManager AWS LicenseManager 需要AWSServiceRoleForAWSLicenseManagerRole服務連結角色 (SLR),以允許 AWS 資源代表您管理授權。每個帳戶都SLR是一次性要求,您不必為每個附加元件或每個叢集建立單獨SLR的要求。如需有關指派權限給IAM主參與者的詳細資訊,請參閱IAM使用者指南中的新增和移除IAM身分識別權限。
如果未列出您要安裝的 AWS Marketplace 附加元件,則您可以在搜尋方框中輸入文字來搜尋可用的附加元件。您也可以在篩選選項中,依類別、廠商或定價模式搜尋,然後從搜尋結果中選擇附加元件。選取您要安裝的附加元件後,請選擇 Next (下一步)。
-
在設定選取的附加元件設定頁面上,執行以下操作:
-
選擇檢視訂閱選項即可開啟訂閱選項表單。檢閱定價詳細資料和法律區段,然後選擇訂閱按鈕以繼續。
-
在「版本」中,選擇您要安裝的版本。除非您建立的個別附加元件建議使用不同的版本,否則我們建議您使用標記為最新的版本。若要判斷附加元件是否有建議的版本,請參閱您所建立之附加元件的文件。
-
如果您選取的所有附加元件都有 [狀態] 下的 [需要訂閱],請選擇 [下一步] 在您建立叢集之後訂閱這些附加元件之前,您無法進一步設定這些附加元件。對於 [狀態] 下沒有 [需要訂閱] 的附加元件,請執行下列動作:
-
對於 「選取IAM角色」,請接受預設選項,除非附加元件需要IAM權限。如果附加元件需要 AWS 權限,您可以使用節點的IAM角色 (未設定) 或您建立用於附加元件的現有角色。若沒有可選取的角色,則表示您沒有現有角色。無論您選擇哪個選項,請參閱您建立的附加元件說明文件,以建立IAM原則並將其附加至角色。選取IAM角色需要叢集的 IAM OpenID Connect (OIDC) 提供者。若要判定您的叢集是否已經擁有一個提供者,或是要建立一個提供者,請參閱 為您的叢集建立IAMOIDC提供者。
-
選擇 Optional configuration settings (選用組態設定)。
-
如果附加元件需要組態,請在 Configuration values (組態值) 方塊中輸入。若要判斷附加元件是否需要組態資訊,請參閱您所建立之附加元件的文件。
-
選擇衝突解決方法的其中一個可用選項。如果您為衝突解決方法選擇覆寫,則可以使用 Amazon 附加元件設定覆寫現有附加元EKS件的一或多個設定。若未啟用此選項,而且有設定與現有設定發生衝突,則操作會失敗。您可以使用產生的錯誤訊息對此衝突進行疑難排解。選擇此選項之前,請確保 Amazon EKS 附加元件不會管理您需要自行管理的設定。
-
選擇 Next (下一步)。
-
-
-
在檢閱並新增頁面上,選擇建立。附加元件安裝完成後,您會看到已安裝的附加元件。
-
如果您安裝的任何附加元件需要訂閱,請完成下列步驟:
-
選擇附加元件右下角的 Subscribe (訂閱) 按鈕。系統將帶您前往 AWS Marketplace中附加元件的頁面。請閱讀附加元件的相關資訊,例如其產品概觀和定價資訊。
-
選取附加元件頁面右上方的 Continue to Subscribe (繼續訂閱) 按鈕。
-
請完整閱讀條款與條件。如果您同意,請選擇 Accept Terms (接受條款)。處理訂閱可能需要幾分鐘的時間。訂閱正在處理時,「返回 Amazon EKS 主控台」按鈕會呈現灰色。
-
訂閱完成處理後,「返回 Amazon EKS 主控台」按鈕將不再呈現灰色。選擇按鈕以返回叢集的 Amazon EKS 主控台附加元件索引標籤。
-
針對您訂閱的附加元件,請選擇 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
yum
、apt-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
-
判斷有哪些附加元件可用。您可以查看所有可用的附加元件、其類型及其發佈者。您還可以查看可通過的附加組件 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以深入瞭解附加元件並訂閱該附加元件。 -
您可以查看每個附加元件可用的版本。使用您的叢集版本取代
,並使用上一步傳回的附加元件名稱取代1.30
。vpc-cni
aws eks describe-addon-versions --kubernetes-version
--addon-name1.30
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
的版本在預設情況下是用來建立附加元件的版本。 -
(選用) 執行下列命令,尋找您所選附加元件的組態選項:
aws eks describe-addon-configuration --addon-name
vpc-cni
--addon-versionv1.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
-
判斷附加元件是否需要IAM權限。如果是這樣,您需要 (1) 決定是否要針對服務帳戶使用EKS網繭身分或IAM角色 (IRSA)、(2) 決定要與附加元件搭配使用ARN的IAM角色,以及 (3) 決定附加元件所使用之 Kubernetes 服務帳戶的名稱。如需詳細資訊,請參閱擷取有IAM關 Amazon EKS 附加元件的資訊。
-
如果附加元件支援,Amazon EKS 建議使用EKS網繭身分識別。這需要在叢集上安裝網繭身分識別代理程式。如需搭配附加元件使用網繭識別的相關資訊,請參閱IAMAmazon EKS 附加元件角色。
-
如果附加元件或您的叢集未設定EKS網繭身分識別,請使用IRSA。確認IRSA已在您的叢集上設定。
-
請參閱 Amazon EKS 附加元件文件,以判斷附加元件是否需要IAM許可,以及相關聯 Kubernetes 服務帳戶的名稱。
-
-
創建一個 Amazon EKS 插件。將隨後的命令複製到您的裝置。視需要對命令進行下列修改,然後執行修改後的命令:
-
使用您叢集的名稱取代
。my-cluster
-
使用您想要建立之上一步輸出中傳回的附加元件名稱取代
。vpc-cni
-
使用您想要使用之上一步輸出中傳回的版本取代
。version-number
-
如果附加元件不需要IAM權限,請刪除
。<service-account-configuration>
-
執行以下任意一項:
-
如果附加元件 (1) 需要IAM權限,且 (2) 您的叢集使用EKS網繭識別,請以下列網繭身分識別關聯取代
。替換<service-account-configuration>
為附加元件使用的服務帳戶名稱。取<service-account-name>
代為ARNIAM角色的。角色必須具有EKS網繭識別所需的信任原則。<role-arn>
--pod-identity-associations 'serviceAccount=
<service-account-name>
,roleArn=<role-arn>
' -
如果附加元件 (1) 需要IAM權限,以及 (2) 您的叢集使用IRSA,請以下列IRSA組態取代
。以您<service-account-configuration>
的帳戶 ID111122223333
和您建立的現有IAM角色名稱取代。如需建立角色的說明,請參閱您所建立之附加元件的文件。若要指定服務帳戶角色,叢集需要 IAM OpenID Connect (OIDC) 提供者。若要判定您的叢集是否已經擁有一個提供者,或是要建立一個提供者,請參閱 為您的叢集建立IAMOIDC提供者。role-name
--service-account-role-arn arn:aws::iam::
111122223333
:role/role-name
-
-
這些範例命令會覆寫任何現有自我管理附加元件版本的
--configuration-values
選項 (如果有的話)。將其取代為所需的組態值,例如字串或檔案輸入。如果您不想提供組態值,請刪除--configuration-values
選項。如果您不想覆寫現有自我管理附加元件的組態,請移除該
選項。 AWS CLI 如果您移除該選項,且 Amazon EKS 附加元件需要覆寫現有自我管理附加元件的組態,則建立 Amazon EKS 附加元件會失敗,並顯示錯誤訊息以協助您解決衝突。在指定此選項之前,請確定 Amazon EKS 附加元件不會管理您需要管理的設定,因為這些設定會被此選項覆寫。--resolve-conflicts OVERWRITE
aws eks create-addon --cluster-name
my-cluster
--addon-namevpc-cni
--addon-versionversion-number
\<service-account-configuration>
--configuration-values '{"resources":{"limits":{"cpu":"100m"}}
}' --resolve-conflictsOVERWRITE
aws eks create-addon --cluster-name
my-cluster
--addon-namevpc-cni
--addon-versionversion-number
\<service-account-configuration>
--configuration-values 'file://example
.yaml' --resolve-conflictsOVERWRITE
如需可用選項的完整清單,請參閱 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
命令。 -
-