建立 Amazon EKS 叢集 - Amazon EKS

協助改善此頁面

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

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

建立 Amazon EKS 叢集

本主題提供可用選項的概觀,並介紹您建立 Amazon EKS 叢集時需要考慮的問題。如果您需要在 AWS Outpost 上建立叢集,請參閱AWS Outposts 上的 Amazon EKS 本機叢集。如果這是您第一次建立 Amazon 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

  • 您裝置上安裝和設定的 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 叢集 createdescribe 的許可的 IAM 主體。如需詳細資訊,請參閱 在 Outpost 上建立本機 Kubernetes 叢集所有叢集的清單或描述

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

    建立 Amazon EKS 叢集 IAM 角色
    1. 執行下列命令以建立 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
    2. 建立 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"
    3. 您可以指派 Amazon EKS 受管政策或建立自己的自訂政策。如需了解在自訂政策中必須使用的最低許可,請參閱 Amazon EKS 叢集 IAM 角色

      將名為 AmazonEKSClusterPolicy 的 Amazon EKS 受管 IAM 政策連接到角色。若要將 IAM 政策連接至 IAM 主體,必須為連接政策的 IAM 實體指派以下 IAM 動作之一 (許可):iam:AttachUserPolicyiam:AttachRolePolicy

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy --role-name myAmazonEKSClusterRole
  2. 建立 Amazon EKS 叢集。

    您可以使用eksctl AWS Management Console、或建立叢集 AWS CLI。

    eksctl
    先決條件

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

    若要建立叢集

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

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

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

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

      注意

      若要在此時部署 1.30 叢集,您必須使用 AWS Management Console 或. AWS CLI

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

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

    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
    提示

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

    選項設定

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

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

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

    • 如果您想指定 Kubernetes 要從哪個 IPv4 無類別域間路由 (CIDR) 區塊中指派服務 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 EKS 資源的 VPC 範圍不重疊。

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

    • 如果您正在建立叢集,並希望叢集將 IPv6 地址 (而不是 IPv4 地址) 指派給 Pods 和服務,請指定 ipFamily 選項。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      • (選用) 選擇 Configure Kubernetes Service IP address range (設定 服務 IP 地址範圍),並指定 Service range (服務 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 (叢集端點存取),選取一個選項。建立叢集後,您可以變更此選項。在選取非預設選項之前,請務必熟悉這些選項及其含義。如需詳細資訊,請參閱 Amazon EKS 叢集端點存取控制

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

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

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

    6. Select add-ons (選取附加元件) 頁面上,選擇您要新增至叢集的附加元件。您可以根據需要選擇任意多個 Amazon EKS 附加元件AWS Marketplace 附加元件。如果未列出您要安裝的 AWS Marketplace 附加元件,則您可以在搜尋方框中輸入文字來搜尋可用的 AWS Marketplace 附加元件。您也可以依 category (類別)、vendor (廠商) 或 pricing model (定價模式) 進行搜尋,然後從搜尋結果中選擇附加元件。完成此頁面後,請選擇下一步

    7. 設定選取的附加元件設定頁面上,選取您要安裝的版本。建立叢集後,您隨時皆可更新至更新版本。您可以在建立叢集後更新每個附加元件的組態。如需有關設定附加元件的詳細資訊,請參閱更新附加元件。完成此頁面後,請選擇下一步

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

      注意

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

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

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

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

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

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

      • 使用您的帳戶 ID 取代 111122223333,再以您的叢集 IAM 角色名稱取代 myAmazonEKSClusterRole

      • 以您自己的值取代 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/myAmazonEKSClusterRole \ --resources-vpc-config subnetIds=subnet-ExampleID1,subnet-ExampleID2,securityGroupIds=sg-ExampleID1
      注意

      您可能會收到錯誤,表示在請求中的其中一個可用區域沒有足夠的容量可建立 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 地址) 指派給 Pods 和服務,請將 --kubernetes-network-config ipFamily=ipv6 新增至以下命令。

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

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

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

      在傳回的輸出為 ACTIVE 之前,請勿進行下一個步驟。

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

    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
  4. 透過執行以下命令確認與叢集的通訊。

    kubectl get svc

    範例輸出如下。

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 28h
  5. (建議) 若要使用某些 Amazon EKS 附加元件,或讓個別Kubernetes工作負載具有特定 AWS Identity and Access Management (IAM) 許可,請為叢集建立 IAM OpenID Connect (OIDC) 提供者。您只需要為叢集建立 IAM OIDC 提供商一次。若要進一步了解 Amazon EKS 附加元件,請參閱 Amazon EKS 附加元件。若要進一步了解如何將特定 IAM 許可指派給您的工作負載,請參閱 服務帳戶的 IAM 角色

  6. (建議) 將叢集設定為 Amazon VPC CNI plugin for Kubernetes 外掛程式,然後再將 Amazon EC2 節點部署到叢集。預設情況下,外掛程式已隨叢集一起安裝。將 Amazon EC2 節點新增到叢集時,外掛程式會自動部署至您新增的每個 Amazon EC2 節點。外掛程式要求您將以下 IAM 政策之一連接至 IAM 角色:

    AmazonEKS_CNI_Policy 受管 IAM 政策

    如果您的叢集使用 IPv4 系列

    您建立的 IAM 政策

    如果您的叢集使用 IPv6 系列

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

  7. 如果您使用部署叢集 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 和 kube-proxy 自我管理附加元件遷移到 Amazon EKS 附加元件。如需詳細資訊,請參閱 Amazon EKS 附加元件

  8. (選用) 如果您尚未執行此操作,則可啟用叢集的 Prometheus 指標。如需詳細資訊,請參閱《Amazon Managed Service for Prometheus 使用者指南》中的建立湊集器

  9. 如果啟用了 Prometheus 指標,則必須設定 aws-auth ConfigMap 來授予湊集器叢集內許可。如需詳細資訊,請參閱《Amazon Managed Service for Prometheus 使用者指南》中的設定 Amazon EKS 叢集

  10. 如果您計劃將工作負載部署到使用 Amazon EBS 磁碟區的叢集,並建立了 1.23 或更新版本的叢集,則必須在部署工作負載之前先為您的叢集安裝 Amazon EBS CSI 驅動程式

建議的後續步驟: