建立 Amazon EKS 自動模式叢集 - Amazon EKS

協助改進此頁面

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

建立 Amazon EKS 自動模式叢集

本主題提供使用進階組態選項建立 Amazon EKS 自動模式叢集的詳細說明。內容涵蓋先決條件、聯網選項和附加元件組態。程序包括設定 IAM 角色、設定叢集設定、指定網路參數以及選取附加元件。使用者可使用 AWS 管理主控台 或 AWS CLI 建立叢集,兩種方法均提供逐步指引。

對於尋求較簡單設定程序的使用者,請參閱以下簡化叢集建立步驟:

本進階組態指指南適用於需要對其 EKS 自動模式叢集設定進行更精細控制,並熟悉 Amazon EKS 概念和要求的進階使用者。在繼續進行進階組態之前,請確保您已滿足所有先決條件,並徹底了解 EKS 自動模式叢集的聯網和 IAM 要求。

EKS 自動模式需要額外的 IAM 許可。如需詳細資訊,請參閱:

注意

如果您想建立沒有 EKS 自動模式的叢集,請參閱 建立 Amazon EKS 叢集

本主題涵蓋進階組態。如果您剛開始使用 EKS 自動模式,請參閱 使用 Amazon EKS 自動模式建立叢集

先決條件

  • 現有 VPC 和子網符合 Amazon EKS 要求。部署叢集以供生產使用之前,建議您先徹底了解 VPC 和子網要求。如果您沒有 VPC 和子網路,您可以使用 Amazon EKS 提供的 AWS CloudFormation 範本建立。

  • 已在裝置或 AWS CloudShell 上安裝 kubectl 命令列工具。版本可以與您的叢集 Kubernetes 版本相同,或是為最多比該版本更舊一版或更新一版的次要版本。例如,如果您的叢集版本為 1.29,則可以搭配使用 kubectl 1.281.291.30 版。若要安裝或升級 kubectl,請參閱 設定 kubectl 和 eksctl

  • 已在裝置或 AWS CloudShell 上安裝和設定 AWS 命令列介面 (AWS CLI) 版本 2.12.3 或更新版本,或是版本 1.27.160 或更新版本。若要檢查您目前的版本,請使用 aws --version。若要安裝最新版本,請參閱《AWS 命令列介面使用者指南》中的安裝使用 aws configure 的快速組態

  • 具有建立修改 EKS 與 IAM 資源許可的 IAM 主體

建立叢集 - AWS 主控台

  1. 開啟 Amazon EKS 主控台

  2. 選取 Add cluster (新增叢集),然後選取 Create (建立)。

  3. 組態選項下,請選取自訂組態

  4. 確認使用 EKS 自動模式已啟用。

    • 本主題涵蓋使用 EKS 自動模式建立叢集。有關建立無 EKS 自動模式的叢集的更多資訊,請參閱 建立 Amazon EKS 叢集

  5. Configure cluster (設定叢集) 頁面上,輸入下列欄位:

    • Name (名稱):叢集的名稱。名稱僅包含英數字元 (區分大小寫)、連字號和底線。必須以英數字元開頭,且長度不可超過 100 個字元。在您要建立叢集的 AWS 區域和 AWS 帳戶中,該名稱必須是唯一的。

    • 叢集 IAM 角色:選擇您建立的 Amazon EKS 叢集 IAM 角色,以允許 Kubernetes 控制平面代表您來管理 AWS 資源。如果您先前尚未為 EKS 自動模式建立叢集 IAM 角色,請選取建立建議的角色按鈕,以在 IAM 主控台中建立具有所需許可的角色。

    • Kubernetes version (Kubernetes 版本) – 您的叢集使用的 Kubernetes 版本。我們建議選取最新版本,除非您需要較早版本。

    • 升級政策:您要為叢集設定的 Kubernetes 版本政策。如果您希望叢集僅在標準支援版本上執行,可以選擇標準。如果您希望叢集在某個版本的標準支援結束時進入延伸支援,可以選擇延伸。如果您選擇的 Kubernetes 版本目前處於延伸支援狀態,則無法選取標準支援作為選項。

  6. 在設定叢集頁面的自動模式運算區段,輸入以下欄位:

    • 節點集區:決定是否要使用內建節點集區。如需詳細資訊,請參閱 啟用或停用內建的 NodePool

    • 節點 IAM 角色:如果您啟用任何內建節點集區,則需要選取一個節點 IAM 角色。EKS 自動模式會將此角色分配給新節點。建立叢集之後,便無法變更此值。如果您先前尚未為 EKS 自動模式建立節點 IAM 角色,請選取建立建議的角色按鈕,以建立具有所需許可的角色。如需有關此角色的詳細資訊,請參閱 了解 EKS 自動模式中的身分和存取

  7. 在設定叢集頁面的叢集存取部分,輸入以下欄位:

    • 引導叢集管理員存取:叢集建立者自動成為 Kubernetes 管理員。如果您要停用此功能,請選擇不允許叢集管理員存取

    • 叢集身分驗證模式:EKS 自動模式需要 EKS 存取項目,也就是 EKS API 身分驗證模式。您可以選擇性地透過選擇 EKS API 和 ConfigMap 來啟用 ConfigMap 身分驗證模式。

  8. 在設定叢集頁面上,輸入以下欄位:

    • Secrets encryption (秘密加密):(選用) 選擇使用 KMS 金鑰啟用 Kubernetes 秘密的秘密加密。您也可以在建立叢集後啟用此功能。啟用此功能之前,請確定您已熟悉 在現有叢集上使用 KMS 加密 Kubernetes 秘密 中的資訊。

    • ARC 區域轉移:EKS 自動模式不支援 ARC 區域轉移。

    • Tags (標籤) – (選用) 將任何標籤新增到您的叢集。如需詳細資訊,請參閱 使用標籤組織 Amazon EKS 資源

      完成此頁面後,請選擇下一步

  9. Specify networking (指定網路) 頁面上,選取下列欄位的值:

    • VPC:選擇符合 Amazon EKS VPC 要求的現有 VPC 來建立您的叢集。選擇 VPC 之前,建議您先熟悉 檢視 VPC 和子網路的 Amazon EKS 聯網需求 中的所有要求和考量事項。建立叢集後,您無法變更要使用的 VPC。如果沒有列出 VPC,則您需要先建立一個。如需詳細資訊,請參閱 為您的 Amazon EKS 叢集建立 Amazon VPC

    • Subnets (子網路):根據預設,前一個欄位指定的 VPC 中的所有可用子網路會預先選取。您必須選取至少兩個。

      您選擇的子網必須符合 Amazon EKS 子網要求。選擇子網路之前,建議您先熟悉 Amazon EKS VPC 和子網路要求和考量事項

      安全群組:(選用) 指定一或多個您希望 Amazon EKS 與其建立的網路介面相關聯的安全群組。

      無論您是否選擇任何安全群組,Amazon EKS 都會建立一個安全群組,以支援您的叢集和 VPC 之間的通訊。Amazon EKS 將此安全群組及您選擇的任何群組與其建立的網路介面相關聯。如需有關 Amazon EKS 建立的叢集安全群組的詳細資訊,請參閱 檢視叢集的 Amazon EKS 安全群組要求。您可以修改 Amazon EKS 建立的叢集安全群組中的規則。

    • 選擇叢集 IP 地址系列:您可以選擇 IPv4IPv6

      預設情況下,Kubernetes 會為 Pod 和服務指派 IPv4 位址。在決定使用 IPv6 系列之前,請確認您已熟悉 VPC 要求和考量事項子網需求和注意事項檢視叢集的 Amazon EKS 安全群組要求了解叢集、Pod 與服務的 IPv6 位址 主題中的所有考量事項和要求。如果您選擇 IPv6 系列,則無法像對 IPv4 系列那樣,指定 Kubernetes 從中分配 IPv6 服務位址的位址範圍。Kubernetes 從唯一的本地位址範圍指派服務位址 (fc00::/7)。

    • (選用) 選擇設定 Kubernetes 服務 IP 位址範圍,並指定服務 IPv4 範圍

      指定您自己的範圍有助於防止 Kubernetes 服務與對等或連接到您的 VPC 的其他網路之間發生衝突。在 CIDR 標記法中輸入範圍。例如:10.2.0.0/16

      CIDR 區塊必須符合下列需求:

      • 處於以下範圍之一:10.0.0.0/8172.16.0.0/12192.168.0.0/16

      • 具有最小尺寸的 /24 和最大尺寸的 /12

      • 與您的 Amazon EKS 資源的 VPC 範圍不重疊。

    您只能在使用 IPv4 地址系列時指定此選項,並且只能在建立叢集時指定。如果您未指定此項,則 Kubernetes 會從 10.100.0.0/16172.20.0.0/16 CIDR 區塊指派服務 IP 位址。

    • 針對 Cluster endpoint access (叢集端點存取),選取一個選項。建立叢集後,您可以變更此選項。在選取非預設選項之前,請務必熟悉這些選項及其含義。如需詳細資訊,請參閱 叢集 API 伺服器端點

      完成此頁面後,請選擇下一步

  10. (選用) 在設定可觀測性頁面上,選擇要開啟的指標控制平面日誌記錄選項。根據預設,系統會關閉每個日誌類型。

  11. Select add-ons (選取附加元件) 頁面上,選擇您要新增至叢集的附加元件。您可以根據需要選擇任意多個 Amazon EKS 附加元件AWS Marketplace 附加元件。如果未列出您要安裝的 AWS Marketplace 附加元件,則可以點選頁碼以檢視其他頁面結果,或可以在搜尋方框中輸入文字來搜尋可用的 AWS Marketplace 附加元件。您也可以依類別廠商定價模式搜尋,然後從搜尋結果中選擇附加元件。建立叢集時,您可以檢視、選取和安裝支援 EKS Pod 身分識別的任何附加元件,詳見 了解 EKS Pod 身分識別如何授予 AWS 服務的 Pod 存取權

    • EKS 自動模式會自動化某些附加元件的功能。如果您計劃將 EKS 受管節點群組部署到 EKS 自動模式叢集,選取其他 Amazon EKS 附加元件並檢閱選項。您可能需要安裝 CoreDNS 和 kube-proxy 等附加元件。EKS 僅會在自我管理節點與節點群組上安裝本節中的附加元件。

    • 完成此頁面後,請選擇下一步

  12. 設定選取的附加元件設定頁面上,選取您要安裝的版本。建立叢集後,您隨時皆可更新至更新版本。

    對於支援 EKS Pod 身分識別的附加元件,您可以使用主控台自動產生角色,其名稱、AWS 受管政策和信任政策已預先填入,專門用於該附加元件。您可以重複使用現有角色或為支援的附加元件建立新角色。有關使用主控台為支援 EKS Pod 身分識別的附加元件建立角色的步驟,請參閱 建立附加元件 (AWS 主控台)。如果附加元件不支援 EKS Pod 身分識別,則會顯示一則訊息,指示在叢集建立後使用精靈建立服務帳戶的 IAM 角色 (IRSA)。

    您可以在建立叢集後更新每個附加元件的組態。如需有關設定附加元件的詳細資訊,請參閱更新 Amazon EKS 附加元件。完成此頁面後,請選擇下一步

  13. Review and create (檢閱並建立) 頁面上,檢閱您在先前頁面上輸入或選取的資訊。如需變更,請選擇 Edit (編輯)。當您感到滿意時,請選擇建立。在佈建叢集時,Status (狀態) 欄位顯示 CREATING (正在建立)。

    注意

    您可能會收到錯誤,表示在請求中的其中一個可用區域沒有足夠的容量可建立 Amazon EKS 叢集。如果發生這種情況,錯誤輸出包含的可用區域可支援新的叢集。使用至少兩個位於帳戶的支援可用區域子網路來建立您的叢集。如需詳細資訊,請參閱 容量不足

    叢集佈建需要幾分鐘的時間。

建立叢集 - AWS CLI

以下 CLI 說明涵蓋建立 IAM 資源和建立叢集。

建立 EKS 自動模式叢集 IAM 角色

步驟 1:建立信任政策

建立信任政策,允許 Amazon EKS 服務擔任該角色。將政策儲存為 trust-policy.json

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }

步驟 2:建立 IAM 角色

使用信任政策建立叢集 IAM 角色:

aws iam create-role \
    --role-name AmazonEKSAutoClusterRole \
    --assume-role-policy-document file://trust-policy.json

步驟 3:記下角色 ARN

擷取並儲存新角色的 ARN,供後續步驟使用:

aws iam get-role --role-name AmazonEKSAutoClusterRole --query "Role.Arn" --output text

步驟 4:附加所需政策

將以下 AWS 受管政策附加到叢集 IAM 角色,以授予必要的許可:

AmazonEKSClusterPolicy

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy

AmazonEKSComputePolicy

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSComputePolicy

AmazonEKSBlockStoragePolicy

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSBlockStoragePolicy

AmazonEKSLoadBalancingPolicy

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSLoadBalancingPolicy

AmazonEKSNetworkingPolicy

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSNetworkingPolicy

建立 EKS 自動模式節點 IAM 角色

步驟 1:建立信任政策

建立信任政策,允許 Amazon EKS 服務擔任該角色。將政策儲存為 node-trust-policy.json

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

步驟 2:建立節點 IAM 角色

使用上一步中的 node-trust-policy.json 檔案來定義哪些實體可擔任該角色。執行下列命令以建立節點 IAM 角色:

aws iam create-role \
    --role-name AmazonEKSAutoNodeRole \
    --assume-role-policy-document file://node-trust-policy.json

步驟 3:記下角色 ARN

建立角色後,擷取並儲存節點 IAM 角色的 ARN。您在後續步驟中將需要此 ARN。使用以下命令來取得 ARN:

aws iam get-role --role-name AmazonEKSAutoNodeRole --query "Role.Arn" --output text

步驟 4:附加所需政策

將以下 AWS 受管政策附加到節點 IAM 角色,以提供必要的許可:

AmazonEKSWorkerNodeMinimalPolicy

aws iam attach-role-policy \ --role-name AmazonEKSAutoNodeRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodeMinimalPolicy

AmazonEC2ContainerRegistryPullOnly

aws iam attach-role-policy \ --role-name AmazonEKSAutoNodeRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly

建立叢集

  1. 使用下列命令建立您的叢集。執行命令之前,請執行下列替換:

    • region-code 取代為您希望在其中建立叢集的 AWS 區域。

    • 使用您的叢集名稱取代 my-cluster。名稱僅包含英數字元 (區分大小寫)、連字號和底線。必須以英數字元開頭,且長度不可超過 100 個字元。在您要建立叢集的 AWS 區域和 AWS 帳戶中,該名稱必須是唯一的。

    • 使用任何 Amazon EKS 支援的版本取代 1.30

    • 使用您的帳戶 ID 取代 111122223333

    • 如果您為叢集和節點角色建立了不同名稱的 IAM 角色,請取代 ARN。

    • 以您自己的值取代 subnetIds 值。您也可以新增其他 ID。您必須指定至少兩個子網路 ID。

      您選擇的子網必須符合 Amazon EKS 子網要求。選擇子網路之前,建議您先熟悉 Amazon EKS VPC 和子網路要求和考量事項

    • 如果您不想要指定安全群組 ID,請從命令中移除 ,securityGroupIds=sg-<ExampleID1>。如果要指定一或多個安全群組 ID,請將 securityGroupIds 取代為您自己的值。您也可以新增其他 ID。

      無論您是否選擇任何安全群組,Amazon EKS 都會建立一個安全群組,以支援您的叢集和 VPC 之間的通訊。Amazon EKS 將此安全群組及您選擇的任何群組與其建立的網路介面相關聯。如需有關 Amazon EKS 建立的叢集安全群組的詳細資訊,請參閱 檢視叢集的 Amazon EKS 安全群組要求。您可以修改 Amazon EKS 建立的叢集安全群組中的規則。

      aws eks create-cluster \ --region region-code \ --name my-cluster \ --kubernetes-version 1.30 \ --role-arn arn:aws:iam::111122223333:role/AmazonEKSAutoClusterRole \ --resources-vpc-config '{"subnetIds": ["subnet-ExampleID1","subnet-ExampleID2"], "securityGroupIds": ["sg-ExampleID1"], "endpointPublicAccess": true, "endpointPrivateAccess": true}' \ --compute-config '{"enabled": true, "nodeRoleArn": "arn:aws:iam::111122223333:role/AmazonEKSAutoNodeRole", "nodePools": ["general-purpose", "system"]}' \ --kubernetes-network-config '{"elasticLoadBalancing": {"enabled": true}}' \ --storage-config '{"blockStorage": {"enabled": true}}' \ --access-config '{"authenticationMode": "API"}'
      注意

      您可能會收到錯誤,表示在請求中的其中一個可用區域沒有足夠的容量可建立 Amazon EKS 叢集。如果發生這種情況,錯誤輸出包含的可用區域可支援新的叢集。使用至少兩個位於帳戶的支援可用區域子網路來建立您的叢集。如需詳細資訊,請參閱 容量不足

      以下是選用設定,如有需要,必須將其新增至上一個命令中。您只能在建立叢集時啟用這些選項,而不能在建立叢集之後啟用。

    • 如果您想指定 Kubernetes 要從哪個 IPv4 無類別域間路由 (CIDR) 區塊中指派服務 IP 地址,您必須將 --kubernetes-network-config serviceIpv4Cidr=<cidr-block> 新增至下列命令來指定。

      指定您自己的範圍有助於防止 Kubernetes 服務與對等或連接到您的 VPC 的其他網路之間發生衝突。在 CIDR 標記法中輸入範圍。例如:10.2.0.0/16

      CIDR 區塊必須符合下列需求:

      • 處於以下範圍之一:10.0.0.0/8172.16.0.0/12192.168.0.0/16

      • 具有最小尺寸的 /24 和最大尺寸的 /12

      • 與您的 Amazon EKS 資源的 VPC 範圍不重疊。

        您只能在使用 IPv4 地址系列時指定此選項,並且只能在建立叢集時指定。如果您未指定此項,則 Kubernetes 會從 10.100.0.0/16172.20.0.0/16 CIDR 區塊指派服務 IP 位址。

    • 如果您正在建立叢集,並希望叢集將 IPv6 位址 (而不是 IPv4 位址) 指派給 Pod 和服務,請將 --kubernetes-network-config ipFamily=ipv6 新增至以下命令。

      預設情況下,Kubernetes 會為 Pod 和服務指派 IPv4 位址。在決定使用 IPv6 系列之前,請確認您已熟悉 VPC 要求和考量事項子網需求和注意事項檢視叢集的 Amazon EKS 安全群組要求了解叢集、Pod 與服務的 IPv6 位址 主題中的所有考量事項和要求。如果您選擇 IPv6 系列,則無法像對 IPv4 系列那樣,指定 Kubernetes 從中分配 IPv6 服務位址的位址範圍。Kubernetes 從唯一的本地位址範圍指派服務位址 (fc00::/7)。

  2. 佈建叢集需要幾分鐘才能完成。您可以使用下列命令來查詢叢集的狀態。

    aws eks describe-cluster --region region-code --name my-cluster --query "cluster.status"

後續步驟