建立 Amazon EKS 叢集 - Amazon EKS

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

建立 Amazon EKS 叢集

本主題提供可用選項的概觀,並說明建立 Amazon EKS 叢集時應考量的事項。如果您需要在 AWS Outpost 上建立叢集,請參閱 在 AWS Outposts 上建立本機 Amazon EKS 叢集以獲得高可用性。如果這是您第一次建立 Amazon EKS 叢集,建議您遵循 中的其中一個指南Amazon EKS 入門。這些指南可協助您建立一個簡單的預設叢集,而無需擴展到所有可用選項。

必要條件

步驟 1:建立叢集 IAM 角色

  1. 如果您已有叢集 IAM 角色,或者您要使用 建立叢集eksctl,則可以略過此步驟。根據預設,eksctl 會為您建立角色。

  2. 執行下列命令以建立 IAM 信任政策 JSON 檔案。

    cat >eks-cluster-role-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
  3. 建立 Amazon EKS 叢集 IAM 角色。如有必要,前置詞 eks-cluster-role-trust-policy.json 在電腦上使用您在上一個步驟中寫入檔案的路徑。命令會將您在上一步驟中建立的信任策略與角色相關聯。若要建立 IAM 角色,必須將建立角色的 IAM 主體指派給 iam:CreateRole 動作 (許可)。

    aws iam create-role --role-name myAmazonEKSClusterRole --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
  4. 您可以指派 Amazon EKS 受管政策或建立自己的自訂政策。如需了解在自訂政策中必須使用的最低許可,請參閱 Amazon EKS 叢集 IAM 角色

    將名為 AWord 政策的 Amazon EKS 受管政策連接至角色。 mazonEKSCluster若要將 IAM 政策連接至 IAM 主體,必須將連接政策的主體指派至下列其中一個 IAM 動作 (許可): iam:AttachUserPolicyiam:AttachRolePolicy

    aws iam attach-role-policy --policy-arn arn:aws: iam::aws:policy/AmazonEKSClusterPolicy --role-name myAmazonEKSClusterRole

步驟 2:建立叢集

您可以使用下列方式建立叢集:

建立叢集 - eksctl

  1. 您需要裝置 or AWS CloudShell 上安裝 版0.194.0或更新版本的eksctl命令列工具。如需有關安裝或更新 eksctl 的指示,請參閱 eksctl 文件中的安裝一節。

  2. 使用 Amazon EKS 預設建立 Amazon EKS IPv4叢集 Kubernetes 預設 AWS 區域中的 版本。執行命令之前,請執行下列替換:

  3. Replace (取代) region-code 您要在其中建立叢集的 AWS 區域。

  4. Replace (取代) my-cluster 叢集的名稱。此名稱僅能使用英數字元 (區分大小寫) 和連字號。它必須以英數字元開頭,且長度不得超過 100 個字元。名稱在您要建立叢集 AWS 的區域和 AWS 帳戶中必須是唯一的。

  5. Replace (取代) 1.29 任何 Amazon EKS 支援的版本

  6. 變更 vpc-private-subnets 的值以符合您的要求。您也可以新增其他 IDs。您必須指定至少兩個子網路 IDs。如果您寧可指定公有子網路,您可以--vpc-private-subnets變更為 --vpc-public-subnets。公有子網路具有關聯的路由表,其具有網際網路閘道的路由,但私有子網路沒有相關聯的路由表。我們建議盡可能使用私有子網。

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

  7. 執行以下命令:

    eksctl create cluster --name my-cluster --region region-code --version 1.29 --vpc-private-subnets subnet-ExampleID1,subnet-ExampleID2 --without-nodegroup

    叢集佈建需要幾分鐘的時間。建立叢集時,會出現幾行輸出。輸出的最後一行類似於下面的範例行。

    [✓] EKS cluster "my-cluster" in "region-code" region is ready
  8. 繼續 步驟 3:更新 kubeconfig

選用設定

若要查看使用 eksctl 建立叢集時可指定的大部分選項,請使用 eksctl create cluster --help 命令。若要查看所有可用的選項,您可使用 config 檔案。如需詳細資訊,請參閱 eksctl 文件中的使用組態檔組態檔結構描述。您可以在 上找到組態檔案範例 GitHub.

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

  • 如果您想要指定一或多個 Amazon EKS 指派給其建立之網路介面的安全群組,請指定 securityGroup 選項。

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

  • 如果您想要指定哪個無IPv4類別網域間路由 (CIDR) 區塊 Kubernetes 從 指派服務 IP 地址,指定 serviceIPv4CIDR 選項。

    指定您自己的範圍有助於防止 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 VPC 資源的 EKS 範圍重疊。

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

  • 如果您要建立叢集,並希望叢集將IPv6地址指派給 Pods 和 服務,而非IPv4地址,請指定 ipFamily 選項。

    Kubernetes 將IPv4地址指派給 Pods 和服務。在決定使用 IPv6 系列之前,請確定您已熟悉 VPC 需求和考量子網路需求和考量檢視叢集的 Amazon EKS 安全群組需求,以及主題中的所有考量和要求了解叢集的 IPv6 地址、pods、 和服務如果您選擇 IPv6 系列,則無法指定 的地址範圍 Kubernetes 從 指派IPv6服務地址,就像您可以為 IPv4 系列指派一樣。Kubernetes 從唯一的本機地址範圍 () 指派服務地址fc00::/7

建立叢集 - AWS 主控台

  1. 開啟 Amazon EKS 主控台

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

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

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

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

    • 支援類型 — Kubernetes 您要為叢集設定的版本政策。如果您希望叢集只在標準支援版本上執行,您可以選擇標準支援。如果您希望叢集在 版本的標準支援結束時輸入延伸支援,您可以選擇延伸支援。如果您選擇 Kubernetes 目前處於延伸支援的版本,您無法選取標準支援做為選項。

    • 叢集服務角色 – 選擇您為允許 而建立的 Amazon EKS 叢集 IAM 角色 Kubernetes 控制平面以代表您管理 AWS 資源。

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

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

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

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

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

    • 子網路 – 預設會預先選取上一個欄位中指定之 VPC 中的所有可用子網路。您必須選取至少兩個。

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

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

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

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

      Kubernetes 將IPv4地址指派給 Pods 和服務。在決定使用 IPv6 系列之前,請確定您已熟悉 VPC 要求和考量、 和 主題中的所有考量和要求。 子網需求和注意事項 檢視叢集的 Amazon EKS 安全群組需求 了解叢集的 IPv6 地址、pods、 和服務如果您選擇 IPv6 系列,則無法指定 的地址範圍 Kubernetes 從 指派IPv6服務地址,就像您可以為 IPv4 系列指派一樣。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 VPC 資源的 EKS 範圍不重疊。

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

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

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

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

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

  6. Select add-ons (選取附加元件) 頁面上,選擇您要新增至叢集的附加元件。某些附加元件會預先選取。您可以視需要選擇任意數量的 Amazon EKS 附加元件 AWS Marketplace 附加元件。如果未列出您要安裝的 AWS Marketplace 附加元件,您可以按一下頁面編號以檢視其他頁面結果,或在搜尋方塊中輸入文字,以搜尋可用的 AWS Marketplace 附加元件。您也可以依類別廠商定價模型進行篩選,然後從搜尋結果中選擇附加元件。建立叢集時,您可以檢視、選取和安裝支援 EKS Pod 身分的任何附加元件,如 所述了解如何 EKS Pod Identity 授予 Pod 對 AWS 服務的存取權

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

    Amazon VPC CNI、CoreDNS 和 kube-proxy 等附加元件預設會安裝。如果您停用任何預設附加元件,可能會影響您執行 Kubernetes 應用程式的能力。

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

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

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

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

    注意

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

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

  9. 繼續 步驟 3:更新 kubeconfig

建立叢集 - AWS CLI

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

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

    • Replace (取代) region-code 包含您要在其中建立叢集 AWS 的區域。

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

    • Replace (取代) 1.30 任何 Amazon EKS 支援的版本

    • Replace (取代) 111122223333 使用您的帳戶 ID 和 myAmazonEKSClusterRole 使用叢集 IAM 角色的名稱。

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

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

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

      無論您是否選擇任何安全群組,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/myAmazonEKSClusterRole \ --resources-vpc-config subnetIds=subnet-ExampleID1,subnet-ExampleID2,securityGroupIds=sg-ExampleID1
      注意

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

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

    • 根據預設,EKS 在叢集建立期間安裝多個聯網附加元件。這包括 Amazon VPC CNI、CoreDNS 和 kube-proxy。

      如果您想要停用這些預設聯網附加元件的安裝,請使用下列參數。這可用於替代 CNIs,例如 Cilium。如需詳細資訊,請參閱 EKS API

      aws eks create-cluster --bootstrapSelfManagedAddons false

    • 如果您想要指定哪個無IPv4類別網域間路由 (CIDR) 區塊 Kubernetes 會從 指派服務 IP 地址,您必須新增 --kubernetes-network-config serviceIpv4Cidr=<cidr-block> to the following command.指定您自己的範圍,以協助防止 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 VPC 資源的 EKS 範圍不重疊。

    • 如果您要建立叢集,並希望叢集將IPv6地址指派給 Pods 和 服務,而不是IPv4地址,請--kubernetes-network-config ipFamily=ipv6新增至下列命令。

      Kubernetes 將IPv4地址指派給 Pods 和服務。在決定使用 IPv6 系列之前,請確定您已熟悉 VPC 要求和考量、、 和 主題中的所有考量和要求子網需求和注意事項 檢視叢集的 Amazon EKS 安全群組需求 了解叢集的 IPv6 地址、pods、 和服務如果您選擇 IPv6 系列,則無法指定 的地址範圍 Kubernetes 從 指派IPv6服務地址,就像您可以為 IPv4 系列指派一樣。Kubernetes 從唯一的本機地址範圍 () 指派服務地址fc00::/7

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

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

    在傳回的輸出為 之前,請勿繼續下一個步驟ACTIVE

  3. 繼續 步驟 3:更新 kubeconfig

步驟 3:更新 kubeconfig

  1. 如果您使用 eksctl 建立叢集,則可以略過此步驟。這是因為 eksctl 已為您完成此步驟。透過向 kubectl config 檔案新增內容,使 kubectl 能夠與您的叢集通訊。如需建立和更新檔案的詳細資訊,請參閱 建立 kubeconfig 檔案,將 kubectl 連接至 EKS 叢集

    aws eks update-kubeconfig --region region-code --name my-cluster

    範例輸出如下。

    Added new context arn:aws: eks:region-code:111122223333:cluster/my-cluster to /home/username/.kube/config
  2. 透過執行以下命令確認與叢集的通訊。

    kubectl get svc

    範例輸出如下。

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 28h

步驟 4:叢集設定

  1. (建議) 使用某些 Amazon EKS 附加元件,或啟用個別 Kubernetes 工作負載具有特定的 AWS 身分和存取管理 (IAM) 許可,請為您的叢集建立 IAM OpenID Connect (OIDC) 供應商。您只需建立 IAM OIDC 叢集的 提供者。若要進一步了解 Amazon EKS 附加元件,請參閱 Amazon EKS 附加元件。若要進一步了解如何將特定 IAM 許可指派給工作負載,請參閱 服務帳戶的 IAM 角色

  2. (建議) 為 設定叢集 Amazon VPC CNI plugin for Kubernetes 外掛程式,然後再將 Amazon EC2 節點部署到您的叢集。預設情況下,外掛程式已隨叢集一起安裝。當您將 Amazon EC2 節點新增至叢集時,外掛程式會自動部署到您新增的每個 Amazon EC2 節點。外掛程式需要您將下列其中一個 IAM 政策連接至 IAM 角色。如果您的叢集使用 IPv4 系列,請使用 AmazonEKS_CNI_Policy 受管 IAM 政策。如果您的叢集使用 IPv6 系列,請使用您建立的 IAM 政策

    您連接政策的 IAM 角色可以是節點 IAM 角色,也可以是僅用於外掛程式的專用角色。我們建議將政策連接至此角色。如需建立角色的詳細資訊,請參閱 設定 Amazon VPC CNI 外掛程式以使用 IRSAAmazon EKS 節點 IAM 角色

  3. 如果您使用 部署叢集 AWS Management Console,則可以略過此步驟。會 AWS Management Console 部署 Amazon VPC CNI plugin for Kubernetes, CoreDNS和 kube-proxy Amazon EKS 附加元件。

    如果您使用 eksctl或 AWS CLI 部署叢集,則 Amazon VPC CNI plugin for Kubernetes, CoreDNS和kube-proxy自我管理附加元件已部署。您可以遷移 Amazon VPC CNI plugin for Kubernetes, CoreDNS,以及與您的叢集一起部署到 Amazon EKS 附加元件的kube-proxy自我管理附加元件。如需詳細資訊,請參閱Amazon EKS 附加元件

  4. (選用) 如果您尚未這麼做,您可以啟用 Prometheus 叢集的指標。如需詳細資訊,請參閱《Amazon Managed Service for Prometheus 使用者指南》中的建立湊集器

  5. 如果您打算將工作負載部署至使用 Amazon EBS 磁碟區 的叢集,且您建立了 1.23或更新版本的叢集,則必須在部署工作負載之前將 Amazon EBS 安裝CSI至叢集。

後續步驟