協助改善此頁面

想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] 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.29,則可以搭配使用 kubectl 1.281.291.30 版。若要安裝或升級 kubectl,請參閱 設定kubectl和 eksctl

  • 您裝置上安裝和設定的 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 叢集許可createIAM主體describe如需詳細資訊,請參閱 在 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.189.0 或更新版本的 eksctl 命令列工具。如需有關安裝或更新 eksctl 的指示,請參閱 eksctl 文件中的安裝一節。

    若要建立叢集

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

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

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

    • 替換為任何 Amazon EKS 支持1.29的版本

      注意

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

    • 變更 vpc-private-subnets 的值以符合您的要求。您也可以添加其他IDs. 您必須指定至少兩個子網路IDs。如果您希望指定公有子網,則可以將 --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 建立的叢集安全群組中的規則。

    • 如果您要指定哪個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 地址系列時指定此選項,並且只能在建立叢集時指定。如果未指定,請從10.100.0.0/16172.20.0.0/16CIDR區塊Kubernetes指派服務 IP 位址。

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

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

    AWS Management Console
    若要建立叢集
    1. https://console.aws.amazon.com/eks/家裡 #/集群打開 Amazon EKS 控制台。

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

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

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

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

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

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

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

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

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

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

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

      • 子網路 — 依預設,會預先選取上一個欄位中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 主題中的所有考量事項和要求。如果選擇 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 地址系列時指定此選項,並且只能在建立叢集時指定。如果未指定,請從10.100.0.0/16172.20.0.0/16CIDR區塊Kubernetes指派服務 IP 位址。

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

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

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

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

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

      某些附加元件,例如 Amazon VPC CNI DNS、核心和 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 帳戶 且您要在中建立叢集。

      • 替換為任何 Amazon EKS 支持1.30的版本

      • 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 VPCCNI,核心DNS和 Kube 代理。

        如果您想要停用這些預設網路附加元件的安裝,請使用下列參數。這可以用於替代CNIs,例如纖毛。如需詳細資訊,請檢閱EKSAPI參考資料。

        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 地址系列時指定此選項,並且只能在建立叢集時指定。如果未指定,請從10.100.0.0/16172.20.0.0/16CIDR區塊Kubernetes指派服務 IP 位址。

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

        預設情況下,Kubernetes 會為 Pods 和服務指派 IPv4 地址。在決定使用 IPv6 系列之前,請確認您已熟悉 VPC需求和考量子網需求和注意事項檢視叢集的 Amazon EKS 安全群組需求將IPv6位址指派給叢集和服務 pods 主題中的所有考量事項和要求。如果選擇 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 能夠與您的叢集通訊。如需建立和更新檔案的詳細資訊,請參閱 透過建立kubeconfig檔案 Connect 線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
  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) 提供者。您只需要為叢集建立一個IAMOIDC提供者一次。若要進一步了解 Amazon EKS 附加元件,請參閱Amazon EKS 插件。若要進一步瞭解如何為工作負載指派特定IAM權限,請參閱服務帳戶的 IAM 角色

  6. (建議) 在將 Amazon EC2 節點部署到叢集之前,先為Amazon VPC CNI plugin for Kubernetes外掛程式設定叢集。預設情況下,外掛程式已隨叢集一起安裝。將 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 KubernetesCoreDNS、kube-proxy自我管理的附加元件遷移到 Amazon EKS 附加元件。如需詳細資訊,請參閱Amazon EKS 插件

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

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

  10. 如果您計劃將工作負載部署到使用 Amazon EBS Volumes 的叢集,並建立了1.23或更新版本的叢集,則必須在部署工作負載之前將工作負載安裝使用 Amazon 存儲Kubernetes卷 EBS到叢集。

建議的後續步驟: