建立 Amazon EKS叢集 - Amazon EKS

協助改善此頁面

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

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

建立 Amazon EKS叢集

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

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

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

  • 在您的裝置或 上安裝和設定的 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 到您的主目錄

  • 具有 create和 Amazon EKS叢集許可describeIAM主體。如需詳細資訊,請參閱 在 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角色

      將名為 的 Amazon EKS受管政策AmazonEKSClusterPolicy連接至 角色。若要將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.191.0 或更新版本的 eksctl 命令列工具。如需有關安裝或更新 eksctl 的指示,請參閱 eksctl 文件中的安裝一節。

    若要建立叢集

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

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

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

    • 1.31 以任何 Amazon EKS支援的版本 取代 。

      注意

      若要目前部署 1.31 叢集,您需要使用 AWS Management Console 或 AWS CLI。

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

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

    eksctl create cluster --name my-cluster --region region-code --version 1.31 --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建立的叢集安全群組中的規則。

    • 如果您想要指定哪個無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 EKS 資源的 VPC 範圍重疊。

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

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

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

    AWS Management Console
    若要建立叢集
    1. 開啟位於 https://console.aws.amazon.com/eks/home#/clusters 的 Amazon EKS主控台。

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

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

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

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

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

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

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

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

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

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

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

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

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

        安全群組 – (選用) 指定您希望 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 EKS 資源的 VPC 範圍重疊。

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

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

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

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

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

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

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

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

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

      注意

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

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

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

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

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

      • 1.31 以任何 Amazon EKS支援的版本 取代 。

      • 111122223333 將 取代為您的帳戶 ID,並將 myAmazonEKSClusterRole取代為叢集IAM角色的名稱。

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

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

      • 如果您不想要指定安全群組 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.31 \ --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、Core DNS和 kube-proxy。

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

        aws eks create-cluster --bootstrapSelfManagedAddons false

      • 如果您想要指定哪個無IPv4類別網域間路由 (CIDR) 區塊 Kubernetes 會從 指派服務 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/16CIDR區塊指派服務 IP 地址。

      • 如果您要建立叢集,並希望叢集將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. 如果您使用 eksctl 建立叢集,則可以略過此步驟。這是因為 eksctl 已為您完成此步驟。透過向 kubectl config 檔案新增內容,使 kubectl 能夠與您的叢集通訊。如需建立和更新檔案的詳細資訊,請參閱 連接 kubectl EKS 透過建立 kubeconfig file

    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 外掛程式 IRSAAmazon 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,以及隨叢集部署至 Amazon 附加元件的kube-proxy自我管理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或更新版本的叢集,則必須在部署工作負載之前將 安裝存放 Kubernetes 使用 Amazon 的磁碟區 EBS至叢集。

建議的後續步驟: