Amazon EKS 入門:AWS Management Console 和 AWS CLI - Amazon EKS

Amazon EKS 入門:AWS Management Console 和 AWS CLI

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

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

先決條件

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

  • AWS CLI:命令列工具,適用於使用 AWS 服務,包括 Amazon EKS。本指南要求您使用 2.4.9 版或更新版本或 1.22.30 版或更新版本。如需詳細資訊,請參閱《AWS Command Line Interface 使用者指南》中的安裝、更新和解除安裝 AWS CLI。安裝 AWS CLI 後,建議您也進行設定。如需詳細資訊,請參閱《AWS Command Line Interface 使用者指南》中的使用 aws configure 進行快速組態設定

  • kubectl:命令列工具,適用於使用 Kubernetes 叢集。本指南要求您使用 1.21 版或更新版本。如需詳細資訊,請參閱 安裝 kubectl

  • 所需的 IAM 許可:您使用的 IAM 安全委託人必須具有使用 Amazon EKS IAM 角色和服務連結角色、AWS CloudFormation 以及 VPC 和相關資源的許可權。如需詳細資訊,請參閱《IAM 使用者指南》中的 Amazon Elastic Kubernetes Service 的動作、資源和條件索引鍵以及使用服務連結角色。您必須以同一位使用者的身分完成本指南中的所有步驟。

步驟 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://amazon-eks.s3.us-west-2.amazonaws.com/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 受管政策連接到該角色。受 Amazon EKS 管理的 Kubernetes 叢集會代表您呼叫其他 AWS 服務,以管理您搭配本服務使用的資源。

    1. 將下列內容複製到名為 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://"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 (建立)。如果沒有看到這個選項,請先在左側導覽窗格中選擇 Amazon EKS Clusters (叢集)。

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

    1. 輸入叢集的 Name (名稱),例如 my-cluster

    2. 對於 Cluster Service Role (叢集服務角色),選擇 myAmazonEKSClusterRole

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

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

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

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

  7. Configure logging (設定記錄) 頁面上,選取 Next (下一步)。

  8. 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 Pod,而無需管理 Amazon EC2 執行個體。

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

Fargate – Linux

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

建立 Fargate 設定檔

  1. 建立 IAM 角色,並將所需的 Amazon EKS IAM 受管政策連接到該角色。當您的叢集在 Fargate 上建立 Pod,在 Fargate 基礎設施上執行的元件需要代表您呼叫 AWS API,進行如從 Amazon ECR 提取容器映像,或將日誌路由到其他 AWS 服務等工作。Amazon EKS Pod 執行角色提供進行此類工作的 IAM 許可。

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

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

      aws iam create-role \ --role-name myAmazonEKSFargatePodExecutionRole \ --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 myAmazonEKSFargatePodExecutionRole
  2. 在以下網址開啟 Amazon EKS 主控台:https://console.aws.amazon.com/eks/home#/clusters

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

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

    1. 選擇 Configuration (組態) 索引標籤。

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

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

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

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

    2. 對於 Pod execution role (Pod 執行角色),選擇您在前一個步驟建立的 myAmazonEKSFargatePodExecutionRole 角色。

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

    4. 選擇 Next (下一步)

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

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

    2. 選擇 Next (下一步)

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

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

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

    注意

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

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

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

    3. 對於 Name (名稱),輸入 CoreDNS

    4. 對於 Pod execution role (Pod 執行角色),選擇您在前一個步驟建立的 myAmazonEKSFargatePodExecutionRole 角色。

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

    6. 選擇 Next (下一步)

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

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

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

    10. 選擇 Next (下一步)

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

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

      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. 選擇 Configuration (組態) 索引標籤。

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

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

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

    1. 對於 Name (名稱),輸入受管節點群組的唯一名稱,例如 my-nodegroup

    2. 對於 Node IAM role name (節點 IAM 角色名稱),選擇您在前一個步驟建立的 myAmazonEKSNodeRole 角色。建議每個節點群組使用其唯一的 IAM 角色。

    3. 選擇 Next (下一步)

  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. 在左側導覽窗格中選擇 Amazon EKS Clusters (叢集)。在 Clusters (叢集) 清單中,選擇您建立之叢集的名稱,例如 my-cluster

  2. my-cluster 頁面上,執行以下作業:

    1. Overview (概觀) 標籤中,您可以看到為叢集部署的 Nodes (節點) 清單。您可以選取節點的名稱,以查看有關節點的詳細資訊。如需有關此處所展示內容的詳細資訊,請參閱 檢視節點

    2. 在叢集的 Workloads (工作負載) 標籤上,您會看到預設部署到 Amazon EKS 叢集的工作負載清單。您可以選取工作負載的名稱,以查看其詳細資訊。如需有關此處所展示內容的詳細資訊,請參閱 檢視工作負載如果建立了 Fargate 節點,則只有 CoreDNS 具有狀態

步驟 5:刪除資源

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

刪除在本指南中建立的資源

  1. 刪除您建立的任何節點群組或 Fargate 設定檔

    1. 在以下網址開啟 Amazon EKS 主控台:https://console.aws.amazon.com/eks/home#/clusters

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

    3. 選擇 Configuration (組態) 索引標籤,然後選擇 Compute (運算) 索引標籤。

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

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

      注意

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

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

  2. 刪除叢集。

    1. 在左側導覽窗格中選擇 Amazon EKS 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. 在以下網址開啟 IAM 主控台:https://console.aws.amazon.com/iam/

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

    3. 從清單中選擇您建立的每個角色 (myAmazonEKSClusterRole,以及 myAmazonEKSFargatePodExecutionRolemyAmazonEKSNodeRole)。選擇 Delete (刪除),輸入請求的確認文字,然後選擇 Delete (刪除)。

下一步驟

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