開始使用 Amazon EKS — AWS Management Console 和 AWS CLI - Amazon EKS

協助改善此頁面

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

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

開始使用 Amazon EKS — AWS Management Console 和 AWS CLI

本指南可協助您建立所有必要的資源,以開始使用 Amazon Elastic Kubernetes Service (Amazon EKS) 使用和. AWS Management Console AWS CLI在本指南中,您可以手動建立每個資源。此教學結束時,您將擁有一個執行中的 Amazon EKS 叢集,而您可以在其中部署應用程式。

本指南中的程序可讓您完全瞭解每個資源的建立方式,以及資源彼此之間的互動方式。如果您希望自動為您建立大部分資源,請使用 eksctl CLI 建立叢集和節點。如需詳細資訊,請參閱 Amazon EKS 入門:eksctl

必要條件

開始此教學之前,您必須先安裝和設定下列在建立和管理 Amazon EKS 叢集所需的工具和資源。

  • AWS CLI— 用於處理包括 Amazon EKS 在內的 AWS 服務的命令行工具。如需詳細資訊,請參閱《 AWS Command Line Interface 使用者指南》中的安裝、更新和解除安裝 AWS CLI。安裝之後 AWS CLI,我們建議您也對其進行配置。如需詳細資訊,請參閱《 AWS Command Line Interface 使用者指南》中的使用 aws configure 進行快速組態設定

  • kubectl:命令列工具,適用於使用 Kubernetes 叢集。如需詳細資訊,請參閱 安裝或更新 kubectl

  • 要的 IAM 許可 — 您使用的 IAM 安全主體必須具有使用 Amazon EKS IAM 角色、服務連結角色 AWS CloudFormation、VPC 和相關資源的許可。如需詳細資訊,請參閱《IAM 使用者指南》中的 Amazon Elastic Kubernetes Service 的動作、資源和條件索引鍵以及使用服務連結角色。您必須以同一位使用者的身分完成本指南中的所有步驟。若要檢查目前使用者,請執行以下命令:

    aws sts get-caller-identity
  • 建議您在 Bash shell 中完成本主題中的步驟。如果您不使用 Bash shell,則某些指令碼命令 (如行接續字元以及設定和使用變數的方式) 需要針對 shell 進行調整。此外,您的 Shell 的引用及轉義規則可能會有所不同。若要取得更多資訊,請參閱《使用指南》中的〈〉 AWS CLI中的〈使用引號搭配字串〉。 AWS Command Line Interface

步驟 1:建立您的 Amazon EKS 叢集

重要

為了盡可能簡單快速地開始使用,本主題包含使用預設設定建立叢集的步驟。建立叢集供生產使用之前,建議您先熟悉所有設定,再使用符合需求的設定來部署叢集。如需詳細資訊,請參閱 建立 Amazon EKS 叢集。只有在建立叢集時,才能夠啟用某些設定。

若要建立叢集
  1. 使用符合 Amazon EKS 要求的公有和私有子網路建立 Amazon VPC。使用 Amazon EKS 支援的任何 AWS 區域 取代 region-code。如需清單 AWS 區域,請參閱 AWS 一般參考指南中的 Amazon EKS 端點和配額您可以使用您選擇的任何名稱取代 my-eks-vpc-stack

    aws cloudformation create-stack \ --region region-code \ --stack-name my-eks-vpc-stack \ --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
    提示

    如需上一個命令建立的所有資源清單,請開啟位於 https://console.aws.amazon.com/cloudformation 的 AWS CloudFormation 主控台。選擇 my-eks-vpc-stack 堆疊,然後選擇 Resources (資源) 索引標籤。

  2. 建立叢集 IAM 角色,並將必要的 Amazon EKS IAM 受管政策附加到該角色。 KubernetesAmazon EKS 管理的叢集代表您呼叫其他 AWS 服務,以管理您搭配服務使用的資源。

    1. 將下列內容複製到名為 eks-cluster-role-trust-policy.json 的檔案。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. 建立角色。

      aws iam create-role \ --role-name myAmazonEKSClusterRole \ --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
    3. 將必要的 Amazon EKS 受管 IAM 政策連接到角色。

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \ --role-name myAmazonEKSClusterRole
  3. 在以下網址開啟 Amazon EKS 主控台:https://console.aws.amazon.com/eks/home#/clusters

    請確定主控台右上角 AWS 區域 顯示的是您 AWS 區域 要在其中建立叢集的。如果不是,請選擇 AWS 區域 名稱旁邊的下拉菜單,然後選擇 AWS 區域 要使用的名稱。

  4. 選擇 Add cluster (新增叢集),然後選擇 Create (建立)。如果沒有看到這個選項,請先在左側導覽窗格中選擇 Clusters (叢集)。

  5. Configure cluster (設定叢集) 頁面上,執行下列操作:

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

    2. 對於叢集服務角色,請選擇我的 Amazoneks ClusterRole

    3. 將其餘設定維持在其預設值,然後選取 Next (下一步)。

  6. Specify networking (指定聯網) 頁面中,執行下列操作:

    1. VPC 下拉式清單中選擇在先前步驟中建立的 VPC ID。這是類似 vpc-00x0000x000x0x000 | my-eks-vpc-stack-VPC 的文字。

    2. 將其餘設定維持在其預設值,然後選取 Next (下一步)。

  7. 設定可觀測性頁面上,選擇下一步

  8. 選取附加元件頁面上,選擇下一步

    如需附加元件的詳細資訊,請參閱 Amazon EKS 附加元件

  9. 設定選取的附加元件設定頁面中,選取下一步

  10. Review and create (檢閱和建立) 頁面上,選取 Create (建立)。

    叢集名稱右側的叢集狀態會顯示 Creating (建立中) 幾分鐘,直到叢集佈建程序完成為止。在狀態為 Active (作用中) 之前不要進行下一個步驟。

    注意

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

步驟 2:將您的電腦設為與叢集進行通訊

在此區段中,您會為叢集建立 kubeconfig 檔案。此檔案中的設定會啟用 kubectl CLI 與您的叢集進行通訊。

若要設定您的電腦與叢集通訊
  1. 為您的叢集建立或更新 kubeconfig 檔案。請使用您在其中建立叢集的 AWS 區域 取代 region-code使用您叢集的名稱取代 my-cluster

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

    根據預設,已在 ~/.kube 建立了 config 檔案,或者已將新叢集的組態新增至現有 ~/.kube 中的 config 檔案。

  2. 測試組態。

    kubectl get svc
    注意

    如果您收到任何授權或資源類型錯誤,請參閱故障診斷主題中的未經授權或存取遭拒 (kubectl)

    範例輸出如下。

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

步驟 3:建立節點

重要

為了盡可能簡單快速地開始使用,本主題包含使用預設設定建立節點的步驟。建立節點供生產使用之前,建議您先熟悉所有設定,再使用符合需求的設定來部署節點。如需詳細資訊,請參閱 Amazon EKS 節點。只有在建立節點時,才能夠啟用某些設定。

您可以使用下列其中一種節點類型來建立叢集。若要進一步了解每種類型,請參閱 Amazon EKS 節點。叢集部署完成後,您可以新增其他節點類型。

  • Fargate – Linux:如果您想要在 AWS Fargate 上執行 Linux 應用程式,請選取此節點類型。Fargate 是無伺服器運算引擎,可讓您部署 Kubernetes Pods 而無須管理 Amazon EC2 執行個體。

  • 受管節點 – Linux如果您想要執行,請選擇此節點類型 Amazon Linux 應用程式。雖然未涵蓋在本指南中,但您也可以將 Windows 自我管理節點和 Bottlerocket 節點新增至您的叢集。

Fargate – Linux

建立 Fargate 設定檔。當 Kubernetes Pods 的部署條件符合設定檔中定義的條件時,Pods 會部署至 Fargate。

建立 Fargate 設定檔
  1. 建立 IAM 角色,並將所需的 Amazon EKS IAM 受管政策連接到該角色。當您的叢集Pods在 Fargate 基礎架構上建立時,在 Fargate 基礎架構上執行的元件必須代表您呼叫 AWS API。這樣他們就可以執行動作,例如從 Amazon ECR 提取容器映像或將日誌路由到其他 AWS 服務。Amazon EKS Pod 執行角色提供進行此類工作的 IAM 許可。

    1. 將下列內容複製到名為 pod-execution-role-trust-policy.json 的檔案。region-code以叢集所 AWS 區域 在的位置取代。如果您想在所有帳戶中使用相同 AWS 區域 的角色,請region-code替換為*。使用您的帳戶 ID 取代 111122223333,再以您的叢集名稱取代 my-cluster。若要在您的帳戶中的所有叢集使用相同角色,請使用 * 取代 my-cluster

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. 建立 Pod 執行 IAM 角色。

      aws iam create-role \ --role-name AmazonEKSFargatePodExecutionRole \ --assume-role-policy-document file://"pod-execution-role-trust-policy.json"
    3. 將必要的 Amazon EKS 受管 IAM 政策連接到角色。

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy \ --role-name AmazonEKSFargatePodExecutionRole
  2. 在以下網址開啟 Amazon EKS 主控台:https://console.aws.amazon.com/eks/home#/clusters

  3. Clusters (叢集) 頁面上,選擇 my-cluster 叢集。

  4. my-cluster 頁面上,執行下列操作:

    1. 選擇 Compute (運算) 索引標籤。

    2. Fargate profiles (Fargate 設定檔) 下,選擇 Add Fargate profile (新增 Fargate 設定檔)。

  5. Configure Fargate Profile (設定 Fargate 設定檔) 頁面上,執行以下操作:

    1. 對於 Name (名稱),輸入 Fargate 設定檔的唯一名稱,例如 my-profile

    2. 對於網繭執行角色,請選擇您在上一FargatePodExecutionRole個步驟中建立的 AmazonEks

    3. 選擇 Subnets (子網路) 下拉式清單並取消選取名稱中含有 Public 的任何子網路。只有私有子網路支援在 Fargate 上執行的 Pods。

    4. 選擇下一步

  6. Configure Pod selection (設定 選擇) 頁面上,執行以下操作:

    1. 針對 Namespace (命名空間),輸入 default

    2. 選擇下一步

  7. Review and create (檢閱和建立) 頁面,檢閱您 Fargate 設定檔的資訊並選擇 Create (建立)。

  8. 數分鐘後,Fargate Profile configuration (Fargate 設定檔組態) 區段中的 Status (狀態) 將從 Creating (建立中) 變更為 Active (作用中)。在狀態為 Active (作用中) 之前不要進行下一個步驟。

  9. 如果打算將所有 Pods 部署至 Fargate (而非 Amazon EC2 節點),請完成以下步驟,以建立另一個 Fargate 設定檔並在 Fargate 上執行預設名稱解析程式 (CoreDNS)。

    注意

    如果您未執行此操作,則此時不會有任何節點。

    1. Fargate Profile (Fargate 設定檔) 頁面上,選擇 my-profile

    2. Fargate profiles (Fargate 設定檔) 下,選擇 Add Fargate Profile (新增 Fargate 設定檔)。

    3. 針對名稱,輸入 CoreDNS

    4. 對於網繭執行角色,請選擇您在上一FargatePodExecutionRole個步驟中建立的 AmazonEks

    5. 選擇 Subnets (子網路) 下拉式清單並取消選取名稱中含有 Public 的任何子網路。只有私有子網路支援在 Fargate 上執行的 Pods。

    6. 選擇下一步

    7. 針對 Namespace (命名空間),輸入 kube-system

    8. 選擇 Match labels (比對標籤),然後選擇 Add label (新增標籤)。

    9. 對於 k8s-appKey (索引鍵),輸入 ,對於其值輸入 kube-dns。這是將預設名稱解析程式 (CoreDNS) 部署到 Fargate 的必要操作。

    10. 選擇下一步

    11. Review and create (檢閱和建立) 頁面,檢閱您 Fargate 設定檔的資訊並選擇 Create (建立)。

    12. 執行以下命令,將預設 eks.amazonaws.com/compute-type : ec2 註釋從 CoreDNS Pods 中移除。

      kubectl patch deployment coredns \ -n kube-system \ --type json \ -p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'
    注意

    系統根據您新增的 Fargate 設定檔標籤建立和部署兩個節點。您不會看到 Node groups (節點群組) 中列出任何節點,因為它們不適用於 Fargate 節點,但您將看到 Overview (概觀) 索引標籤中列出的新節點。

Managed nodes – Linux

建立受管節點群組,指定您在先前步驟中建立的子網路和節點 IAM 角色。

建立 Amazon EC2 Linux 受管節點群組
  1. 建立節點 IAM 角色,並將所需的 Amazon EKS IAM 受管政策連接到該角色。Amazon EKS 節點kubelet常駐程式會代表您呼叫 AWS API。節點透過 IAM 執行個體描述檔和關聯的政策,取得這些 API 呼叫的許可。

    1. 將下列內容複製到名為 node-role-trust-policy.json 的檔案。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. 建立節點 IAM 角色。

      aws iam create-role \ --role-name myAmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-policy.json"
    3. 將所需的受管 IAM 政策連接到角色。

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name myAmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name myAmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name myAmazonEKSNodeRole
  2. 在以下網址開啟 Amazon EKS 主控台:https://console.aws.amazon.com/eks/home#/clusters

  3. 選擇您在 步驟 1:建立您的 Amazon EKS 叢集 中建立之叢集的名稱,例如 my-cluster

  4. my-cluster 頁面上,執行下列操作:

    1. 選擇 Compute (運算) 索引標籤。

    2. 選擇 Add Node Group (新增節點群組)。

  5. Configure Node Group (設定節點群組) 頁面上,執行以下操作:

    1. 對於 Name (名稱),輸入受管節點群組的唯一名稱,例如 my-nodegroup。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。

    2. 對於節點 IAM 角色名稱,請選擇您在上一步中建立的 MyAmazonks NodeRole 角色。建議每個節點群組使用其唯一的 IAM 角色。

    3. 選擇下一步

  6. Set compute and scaling configuration (設定運算和擴展組態) 頁面上,接受預設值,然後選取 Next (下一步)。

  7. Specify networking (指定聯網) 頁面上,接受預設值,然後選取 Next (下一步)。

  8. Review and create (檢閱並建立) 頁面上,檢閱您的受管節點群組組態,然後選擇 Create (建立)

  9. 數分鐘後,Node Group configuration (節點群組組態) 區段中的 Status (狀態) 將從 Creating (建立中) 變更為 Active (作用中)。在狀態為 Active (作用中) 之前不要進行下一個步驟。

步驟 4:檢視資源

您可以檢視節點和 Kubernetes 工作負載。

檢視節點和工作負載
  1. 在左側導覽窗格中選擇 Clusters (叢集)。在 Clusters (叢集) 清單中,選擇您建立之叢集的名稱,例如 my-cluster

  2. my-cluster 頁面上,選擇以下事項:

    1. Compute (運算) 標籤 – 您可以看到為叢集部署的 Nodes (節點) 清單。您可以選取節點的名稱,以查看有關節點的詳細資訊。

    2. Resources (資源) 標籤:您會看到預設部署至 Amazon EKS 叢集的所有 Kubernetes 資源。在主控台中選取任何資源類型,以進一步了解其詳細資訊。

步驟 5:刪除資源

在完成為本教學建立的叢集和節點後,您應該刪除所建立的資源。如果想在刪除資源前使用此叢集執行更多作業,請參閱 後續步驟

刪除在本指南中建立的資源
  1. 刪除您建立的任何節點群組或 Fargate 設定檔

    1. https://console.aws.amazon.com/eks/home#/clusters 開啟 Amazon EKS 主控台。

    2. 在左側導覽窗格中選擇 Clusters (叢集)。在叢集清單中,選取 my-cluster

    3. 選擇 Compute (運算) 索引標籤。

    4. 如果建立了節點群組,請選擇 my-nodegroup 節點群組,然後選擇 Delete (刪除)。輸入 my-nodegroup,然後選擇 Delete (刪除)

    5. 對於您建立的每個 Fargate 設定檔,選擇此設定檔,然後選擇 Delete (刪除)。輸入設定檔的名稱,然後選取 Delete (刪除)。

      注意

      刪除第二個 Fargate 設定檔時,您可能需要等待第一個設定檔完成刪除。

    6. 請刪除節點群組或 Fargate 設定檔後再繼續。

  2. 刪除叢集。

    1. 在左側導覽窗格中選擇 Clusters (叢集)。在叢集清單中,選取 my-cluster

    2. 選擇 Delete cluster (刪除叢集)

    3. 輸入 my-cluster,然後選擇 Delete (刪除)。刪除叢集後再繼續。

  3. 刪除您建立的 VPC AWS CloudFormation 堆疊。

    1. 請在以下位置開啟 AWS CloudFormation 主控台。 https://console.aws.amazon.com/cloudformation

    2. 選擇 my-eks-vpc-stack 堆疊,然後選擇 Delete (刪除)。

    3. Delete my-eks-vpc-stack (刪除 my-eks-vpc-stack) 確認對話方塊中,選擇 Delete stack (刪除堆疊)。

  4. 刪除您建立的 IAM 角色。

    1. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

    2. 在左側導覽窗格中,選擇 Roles (角色)。

    3. 從列表中選擇您創建的每個角色(我的 AmazonEKS ClusterRole,以及亞馬遜人或我的亞馬遜人 FargatePod ExecutionRole)。NodeRole選擇 Delete (刪除),輸入請求的確認文字,然後選擇 Delete (刪除)。

後續步驟

以下文件主題可協助您擴展叢集的功能。