建立 Amazon EKS 叢集 - Amazon EKS

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

建立 Amazon EKS 叢集

這個主題將逐步說明建立 Amazon EKS 叢集的步驟。如果這是您第一次建立 Amazon EKS 叢集,建議您按照其中一個 入門Amazon EKS指南的步驟進行。它們提供建立具有節點之 Amazon EKS 叢集的完整端對端演練。

重要

當 Amazon EKS 叢集已建立時,建立叢集的 IAM 實體 (使用者或角色) 會新增到 Kubernetes RBAC 授權表格做為管理員 (具有 system:masters 許可)。一開始,只有IAM該 使用者可以使用 對 Kubernetes API 伺服器進行呼叫kubectl。 如需詳細資訊,請前往 管理叢集的使用者或 IAM 角色。如果您使用主控台來建立叢集,您必須確保當您在叢集上執行 IAM 命令時,同一個 AWS 使用者登入資料位於 kubectl 軟體開發套件登入資料鏈中。

您可以使用 eksctl、 AWS 管理主控台或 建立叢集AWS CLI。

eksctl

Prerequisite

eksctl 已安裝 版本 0.40.0 或更新版本。若要進行安裝或升級,請查看 eksctl 命令列公用程式

在您的預設區域中,使用Amazon EKS最新的 Kubernetes 版本來建立叢集。以<example-values>您自己的值取代 <> (包括 )。您可以將 <1.19> 取代為任何支援的 版本

eksctl create cluster \ --name <my-cluster> \ --version <1.19> \ --with-oidc \ --without-nodegroup
提示

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

重要

如果您計劃在叢集部署後在 AWS Outposts AWS Wavelength、 或AWS本機區域中部署自我管理 節點,您必須有符合Amazon EKS要求的現有 VPC,並搭配先前的命令使用 --vpc-private-subnets 選項。IDs 您指定的子網路不能是 AWS Outposts AWS Wavelength、 或AWS本機區域子網路。如需使用現有 VPC 的詳細資訊,請前往 文件中的 Use existing VPC: other custom configuration (使用現有的 VPC:其他自訂組態eksctl)。

警告

如果您使用具有 secretsEncryption 選項的組態檔來建立叢集,且此選項需要現有AWS Key Management Service金鑰,而且您使用的金鑰已删除,則叢集不會有復原路徑。如果您啟用信封加密,Kubernetes 密碼會使用您選取的客戶主金鑰 (CMK) 加密。CMK 必須是對稱的,在與叢集相同的區域中建立的,如果 CMK 是以不同的帳戶建立的,則使用者必須具有 CMK 的存取權。如需詳細資訊,請前往 https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html 開發人員指南中的AWS Key Management Service允許其他帳號中的使用者使用 CMK。使用 AWS KMS CMK 的 Kubernetes 秘密加密需要 Kubernetes 版本 1.13 或更新版本。

根據預設, create-key 命令會建立對稱金鑰,搭配金鑰政策,提供帳號在 AWS KMS 動作和資源上的根使用者管理員存取權。如需詳細資訊,請參閱建立金鑰. 如果您想要縮小許可範圍,請確定在即將呼叫 kms:DescribeKey API 之主體的金鑰政策上允許 kms:CreateGrantcreate-cluster 動作。 Amazon EKS 不支援金鑰政策條件 kms:GrantIsForAWSResource。 如果此動作在金鑰政策陳述式中,建立叢集將無法運作。

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

[✓] EKS cluster "<my-cluster>" in "<region-code>" region is ready
AWS 管理主控台

Prerequisites

使用主控台建立叢集

  1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.

  2. 選擇 Create cluster (建立叢集).

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

    • Name (名稱) – 叢集的唯一名稱。

    • Kubernetes version (Kubernetes 版本) – 您的叢集使用的 Kubernetes 版本。

    • Cluster service role (叢集服務角色–) 選擇Amazon EKS叢集角色以允許 Kubernetes 控制平面代您管理 AWS 資源。如需詳細資訊,請參閱Amazon EKS 叢集 IAM 角色.

    • Secrets encryption (機密加密) – (選擇性) 選擇使用 AWS Key Management Service ( (AWS KMS).) 啟用 Kubernetes 機密的信封加密。如果您啟用信封加密,Kubernetes 密碼會使用您選取的客戶主金鑰 (CMK) 加密。CMK 必須是對稱的,在與叢集相同的區域中建立的,如果 CMK 是以不同的帳戶建立的,則使用者必須具有 CMK 的存取權。如需詳細資訊,請前往 https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html 開發人員指南中的AWS Key Management Service允許其他帳號中的使用者使用 CMK。

      使用 AWS KMS CMK 的 Kubernetes 秘密加密需要 Kubernetes 版本 1.13 或更新版本。如果未列出任何金鑰,您必須先建立一個金鑰。如需詳細資訊,請參閱建立金鑰.

      注意

      根據預設, create-key 命令會使用金鑰政策來建立對稱金鑰,以授予帳號在 AWS KMS 動作和資源上的根使用者管理員存取權。如果您想要縮小許可範圍,請確定要呼叫 kms:DescribeKey API 之委託人的金鑰政策上允許 kms:CreateGrantcreate-cluster 動作。

      Amazon EKS 不支援金鑰政策條件 kms:GrantIsForAWSResource。 如果此動作在金鑰政策陳述式中,建立叢集將無法運作。

      警告

      刪除 CMK 會永久使叢集處於降級狀態。如果排定CMKs用於叢集建立的任何部分用於取消,請確認此為取消前的預定動作。金鑰一旦刪除,就沒有復原叢集的路徑。

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

  4. 選取 Next (下一步).

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

    • VPC – 選取現有的 VPC,以用於您的叢集。如果未列出,則您必須先建立一個。如需詳細資訊,請參閱為 Amazon EKS 叢集建立 VPC.

    • Subnets (子網路) – 根據預設,前一個欄位指定的 VPC 中的可用子網路會預先選取。取消選取您不想主控叢集資源的任何子網路,例如工作者節點或負載平衡器。子網路必須符合 Amazon EKS 叢集的需求。如需詳細資訊,請參閱叢集 VPC 考量.

      重要
      • 如果您在 March 26, 2020 之前使用其中一個 Amazon EKS AWS CloudFormation VPC 範本建立的子網路,請留意已於 March 26, 2020. 引進的預設設定變更。如需詳細資訊,請參閱為 Amazon EKS 叢集建立 VPC.

      • 請勿選取 AWS Outposts、 AWS Wavelength 或AWS本機區域中的子網路。如果您計劃在部署叢集之後在 AWS Outposts AWS Wavelength 或AWS本機區域子網路中部署自我管理節點,則請確定您在您選取的 VPC 中具有或可以建立 Outposts 子網路。

      Security groups– (安全群組) 您建立 VPC SecurityGroups時,來自輸出AWS CloudFormation為 Amazon EKS 叢集建立 VPC的值。此安全群組在下拉式清單名稱ControlPlaneSecurityGroup中有 。

      重要

      節點AWS CloudFormation範本會修改您在此指定的安全群組,因此極Amazon EKS力建議您為每個叢集控制平面 (每個叢集一個) 使用專用安全群組。如果此安全群組與其他 資源共用,您可能會封鎖或中斷這些資源的連接。

    • (選用) 如果您想要指定哪個 CIDR 區塊 Kubernetes 指派服務 IP 地址,請選擇 Configure Kubernetes Service IP address range (設定 Kubernetes 服務 IP 地址範圍),並指定 Service (服務) IPv4 範圍。CIDR 區塊必須符合下列要求:

      • 在以下其中一個範圍中:10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16。

      • 介於 /24 和/12 之間。

      • 不會與您 VPC 中指定的任何 CIDR 區塊重疊。

      我們建議指定不會與互連或連接至 VPC 的任何其他網路重疊的 CIDR 區塊。如果您不允許此操作,Kubernetes 會指派來自 10.100.0.0/16 或 172.20.0.0/16 CIDR 區塊的服務 IP 地址。

      重要

      您只能在建立叢集時指定自訂 CIDR 區塊,叢集建立後,就無法變更此值。

    • 針對 Cluster endpoint access – (叢集端點存取) 選擇下列其中一個選項:

      • Public (公用) – 僅允許對叢集的 Kubernetes API 伺服器端點進行公用存取。來自叢集 VPC 之外的 Kubernetes API 請求會使用公用端點。根據預設,允許從任何來源 IP 位址存取。您也可以選擇限制對一或多個 CIDR 範圍的存取權 (例如 192.168.0.0/16),舉例來說,透過選取 Advanced settings (進階設定),然後選取 Add source (新增來源).

      • Private (私人) – 僅允許對叢集的 Kubernetes API 伺服器端點進行私人存取。源自於您叢集的 VPC 的 Kubernetes API 將使用私有 VPC 端點。

        重要

        如果您建立的 VPC 無法存取傳出網際網路,則您必須允許私有存取。

      • Public and private (公用和私人) – 啟用公用和私人存取。

      如需關於先前選項的詳細資訊,請參閱修改叢集端點存取.

  6. 如果您在上一個頁面選取 Kubernetes 1.17 版或更早版本,請跳到下一個步驟。如果您選取 1.18 版,請接受 Networking add-ons (聯網附加元件) 區段中的預設值,以安裝 VPC AWS CNI Amazon EKS 附加元件最新版本。您只能使用Amazon EKS附加元件搭配 1.18 叢集,因為Amazon EKS附加元件需要伺服器端套用 Kubernetes 功能,在 Kubernetes 1.18 之前無法使用。如果您為叢集選取不同的 Kubernetes 版本,則不會顯示此選項。

    重要

    AWS VPC CNI 附加元件設定為使用指派給 IAM 的許可Amazon EKS 節點IAM角色。在建立叢集之後,但在您將任何Amazon EC2節點部署到叢集之前,您必須確保AmazonEKS_CNI_PolicyIAM政策會連接到節點IAM角色,或連接到與附加元件執行 Kubernetes 服務帳號相關聯的不同 角色。我們建議您完成中的指示,將政策指派給與節點IAM角色不同的IAM角色設定 VPC CNI Plugin 以使用服務帳號的 IAM 角色。建立叢集和IAM角色後,您可以更新附加元件來使用您建立的IAM角色。

  7. 選取 Next (下一步).

  8. Configure logging (設定登入) 頁面上,您可以選擇要讓哪些登入類型。依據預設,每個日誌類型皆為停用 (Disabled). 如需詳細資訊,請參閱Amazon EKS 控制平面記錄.

  9. 選取 Next (下一步).

  10. Review and create (檢視和建立) 頁面,檢視您在之前頁面輸入或選取的資訊。如果您需要變更任何選取項目,請選取 Edit (編輯)。如果對設定感到滿意,請選取 Create (建立). Status (狀態) 欄位會顯示 CREATING,直到叢集設定程序完成為止。

    注意

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

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

  11. 遵循中的程序建立適用於 kubeconfig 的 Amazon EKS,與新叢集進行通訊。

  12. (選用) 若要使用Amazon EKS附加元件,或讓各個 Kubernetes 工作負載具備特定IAM許可,您需要為叢集支援 OpenID Connect (OIDC) 供應商。若要為叢集設定 OIDC 供應商,請前往 為您的叢集建立 IAM OIDC 提供者。您只需要為叢集提供 OIDC 提供者一次。若要進一步了解Amazon EKS附加元件,請前往 設定 Amazon EKS 附加元件。若要進一步了解如何將特定IAM許可指派給您的工作負載,請前往 技術概觀

  13. (選用) 在將節點部署到您的叢集之前,建議您設定使用叢集部署的 AWS VPC CNI plugin,以使用服務帳號的 IAM 角色。如需詳細資訊,請參閱設定 VPC CNI Plugin 以使用服務帳號的 IAM 角色.

AWS CLI

Prerequisites

  • 符合 Amazon EKS 叢集需求的現有 VPC 和專用安全群組。如需詳細資訊,請查看 叢集 VPC 考量Amazon EKS 安全群組考量。如果您未擁有 VPC,則可以遵循 為 Amazon EKS 叢集建立 VPC 來建立一個。

  • 現有的 Amazon EKS 叢集IAM角色。如果不具備該角色,您可以遵循 Amazon EKS IAM 角色 來建立一個。

  • 已安裝 AWS CLI 第 2.1.26 版或更新版本或 1.19.7 或更新版本。若要安裝或升級,請查看 中的安裝、更新和解除安裝 AWS AWS Command Line Interface 使用者指南CLI。建議您也設定 AWS CLI。如需詳細資訊,請查看 中 aws configure快速組態AWS Command Line Interface 使用者指南。

使用 建立您的叢集AWS CLI

  1. 使用下列命令建立您的叢集。取代您在 中建立的 Amazon Resource Name (ARN) Amazon EKS 叢集IAM角色Amazon EKS 叢集 IAM 角色,以及您在 中建立的 VPC IDs 子網路和安全群組為 Amazon EKS 叢集建立 VPC。Replace <my-cluster> (包括 <><region-code> ),並搭配您的叢集名稱與 支援的區域。您可以將 <1.19> 取代為任何支援的 版本

    對於 subnetIds,請勿在 AWS Outposts AWS Wavelength 或AWS本機區域中指定子網路。如果您計劃在部署叢集之後在 AWS Outposts AWS Wavelength 或AWS本機區域子網路中部署自我管理節點,則請確定您在您指定的 VPC 中具有或可以建立 Outposts 子網路。

    aws eks create-cluster \ --region <region-code> \ --name <my-cluster> \ --kubernetes-version <1.19> \ --role-arn <arn:aws:iam::111122223333:role/eks-service-role-AWSServiceRoleForAmazonEKS-EXAMPLEBKZRQR> \ --resources-vpc-config subnetIds=<subnet-a9189fe2>,<subnet-50432629>,securityGroupIds=<sg-f5c54184>
    注意

    如果您的 IAM 使用者沒有管理權限,您必須明確為該使用者新增呼叫 Amazon EKS API 操作的許可。如需詳細資訊,請參閱Amazon EKS 身分型政策範例.

    輸出:

    { "cluster": { "name": "<my-cluster>", "arn": "arn:aws:eks:<region-code>:<111122223333>:cluster/<my-cluster>", "createdAt": <1527785885.159>, "version": "<1.19>", "roleArn": "arn:aws:iam::<111122223333>:role/eks-service-role-AWSServiceRoleForAmazonEKS-<AFNL4H8HB71F>", "resourcesVpcConfig": { "subnetIds": [ "<subnet-a9189fe2>", "<subnet-50432629>" ], "securityGroupIds": [ "<sg-f5c54184>" ], "vpcId": "<vpc-a54041dc>", "endpointPublicAccess": true, "endpointPrivateAccess": false }, "status": "CREATING", "certificateAuthority": {} } }
    注意

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

    若要使用AWS Key Management Service來自 (AWS KMS) 的使用者主金鑰 (CMK) 來加密 Kubernetes 秘密,請先使用 create-key 操作建立 CMK。

    MY_KEY_ARN=$(aws kms create-key --query KeyMetadata.Arn —-output text)
    注意

    根據預設, create-key 命令會建立對稱金鑰,搭配金鑰政策,提供帳號在 AWS KMS 動作和資源上的根使用者管理員存取權。如果您想要縮小許可範圍,請確定要呼叫 kms:DescribeKey API 之委託人的金鑰政策上允許 kms:CreateGrantcreate-cluster 動作。

    Amazon EKS 不支援金鑰政策條件 kms:GrantIsForAWSResource。 如果此動作在金鑰政策陳述式中,建立叢集將無法運作。

    --encryption-config 參數新增至 aws eks create-cluster 命令。只能在建立叢集時,啟用 Kubernetes 密碼的加密。

    --encryption-config '[{"resources":["secrets"],"provider":{"keyArn":"<$MY_KEY_ARN>"}}]'

    keyArn 成員可以包含別名或 CMK 的 ARN。CMK 必須是對稱的,在與叢集相同的區域中建立的,如果 CMK 是以不同的帳戶建立的,則使用者必須具有 CMK 的存取權。如需詳細資訊,請前往 https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html 開發人員指南中的AWS Key Management Service允許其他帳號中的使用者使用 CMK。使用 AWS KMS CMK Kubernetes 的秘密加密需要 Kubernetes 版本 1.13 或更新版本。

    警告

    刪除 CMK 會永久使叢集處於降級狀態。若有任何CMKs用於建立叢集的項目被排定進行取消,請確認此為取消前的預定動作。金鑰一旦刪除,就沒有復原叢集的路徑。

  2. 叢集佈建需要幾分鐘的時間。您可以使用下列命令來查詢叢集的狀態。您的叢集狀態為 ACTIVE 時即可繼續。

    aws eks --region <region-code> describe-cluster --name <my-cluster> --query "cluster.status"
  3. 當您的叢集佈建完成時,使用以下命令來擷取 endpointcertificateAuthority.data 值。您必須將這些值新增至kubectl組態,才能與叢集通訊。

    1. 擷取 endpoint.

      aws eks --region <region-code> describe-cluster --name <my-cluster> --query "cluster.endpoint" --output text
    2. 擷取 certificateAuthority.data.

      aws eks --region <region-code> describe-cluster --name <my-cluster> --query "cluster.certificateAuthority.data" --output text
  4. 遵循中的程序建立適用於 kubeconfig 的 Amazon EKS,與新叢集進行通訊。

  5. (選用) 若要使用Amazon EKS附加元件,或讓各個 Kubernetes 工作負載具備特定IAM許可,您需要為叢集支援 OpenID Connect (OIDC) 供應商。若要為叢集設定 OIDC 供應商,請前往 為您的叢集建立 IAM OIDC 提供者。您只需要為叢集提供 OIDC 提供者一次。若要進一步了解Amazon EKS附加元件,請前往 設定 Amazon EKS 附加元件。若要進一步了解如何將特定IAM許可指派給您的工作負載,請前往 技術概觀

  6. (選用) 在將節點部署到您的叢集之前,建議您設定使用叢集部署的 AWS VPC CNI plugin,以使用服務帳號的 IAM 角色。如需詳細資訊,請參閱設定 VPC CNI Plugin 以使用服務帳號的 IAM 角色.