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

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

Amazon EKS 入門AWS Management Console和AWS CLI

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

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

Prerequisites

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

  • AWS CLI— 命令列工具,適用於使用AWS服務,包括亞馬遜 EKS。本指南要求您使用 2.2.5 或更新版本或 1.19.75 或更新版本。如需詳細資訊,請參閱「」安裝、更新和解除安裝AWS CLI中的AWS Command Line Interface使用者指南。在安裝AWS CLI,建議您也設定它。如需詳細資訊,請參閱「」使用 進行快速組態設定aws configure中的AWS Command Line Interface使用者指南。

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

  • 所需的 IAM 許可— 您使用的 IAM 安全主體必須具有使用 Amazon EKS IAM 角色和服務連結角色的許可權,AWS CloudFormation以及 VPC 和相關資源。如需詳細資訊,請參閱「」Amazon Elastic Container Service for Kubernetes 的動作、資源和條件金鑰使用服務連結角色(位於 IAM 使用者指南)。您必須以同一位使用者的身分完成本指南中的所有步驟。

步驟 1:建立 Amazon EKS 叢集

建立 Amazon EKS 叢集。

重要

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

建立叢集

  1. 使用符合 Amazon EKS 要求的公有和私有子網路建立 Amazon VPC。您可以取代範例值,但我們建議使用本教學課程中的範例值。

    aws cloudformation create-stack \ --region us-west-2 \ --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
  2. 建立叢集 IAM 角色,並將必要的 Amazon EKS IAM 受管政策連接到該角色。由亞馬遜 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

    請確認主機右上方選取的區域已俄勒岡。如果沒有,請選取 [區域] 名稱旁的下拉式清單,然後選取美國西部 (奧勒岡) us-west-2。雖然您可以在任何Amazon EKS 支援的區域,在本教程中,它是在美國西部 (奧勒岡) us-west-2

  4. 選擇建立叢集。如果您沒有看到這個選項,請在建立 EKS 叢集方塊中,輸入叢集的名稱,例如my-cluster,然後選取下一個步驟

  5. 設定叢集頁面輸入叢集的名稱,例如my-cluster,然後選取我的亞馬遜群組角色forCluster Services 角色。將剩餘的設定維持在其預設值,然後選取下一頁

  6. 指定網路頁面上,選取百萬萬萬萬萬萬萬萬萬|我的電腦-虛擬電腦-堆疊-虛擬電腦來自VPC下拉式清單。將剩餘的設定維持在其預設值,然後選取下一頁

  7. 設定記錄頁面上,選取下一頁

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

    叢集名稱右側的叢集狀態為正在建立幾分鐘,直到叢集佈建程序完成為止。在狀態為之前,請勿繼續進行下一個步驟。作用中

    注意

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

步驟 2:設定您的電腦與叢集通訊

在本節中,您會建立kubeconfig檔案,以供您的叢集。此檔案中的設定會啟用kubectlCLI 與您的叢集進行通訊。

將電腦設定為與您的叢集進行通訊

  1. 建立或更新kubeconfig檔案,以供您的叢集。如有必要請取代us-west-2替換為您建立叢集的區域。

    aws eks update-kubeconfig \ --region us-west-2 \ --name my-cluster

    根據預設,config檔案建立於~/.kube,或新叢集的配置會新增至現有的config檔案~/.kube

  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:建立 IAM OpenID Connect (OIDC) 供應商

為您的叢集建立 IAM OpenID Connect (OIDC) 提供者,讓工作負載所使用的 Kubernetes 服務帳戶可以存取AWS的費用。您只需要針對叢集完成此步驟一次。

  1. 選取組態索引標籤。

  2. 在 中詳細資訊區段中,複製OpenID Connect 提供者 URL

  3. 在以下網址開啟 IAM 主控台:https://console.aws.amazon.com/iam/

  4. 在導覽面板中,選擇身分供應商

  5. 選擇新增提供者

  6. 適用於Provider Provider中,選擇OpenID Connect

  7. 適用於提供者網址,貼上步驟 2 中的叢集 OIDC 提供者 URL,然後選擇取得指紋

  8. 適用於對象,輸入sts.amazonaws.com,然後選擇新增提供者

步驟 4:建立節點

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

  • Fargate — Linux— 如果您想要在AWSFargate

  • 受管理的節點 — Linux— 如果您想要在 Amazon EC2 執行個體上執行 Amazon Linux 應用程式,請選取此類型。雖然未涵蓋在本指南中,但您也可以將Windows 自我管理瓶罐節點新增至叢集。即使您的所有工作負載都是 Windows,叢集仍必須至少包含一個 Linux 節點。

選取含有您要建立之節點類型名稱的索引標籤。

Fargate – Linux

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

建立 Fargate 設定檔

  1. 建立 IAM 角色,並將所需的 Amazon EKS IAM 受管政策連接到該角色。當叢集在 Fargate 基礎設施上建立 Pod 時,Fargate 基礎設施上執行的元件必須呼叫其他元件。AWSAPI 來執行諸如從 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. 選擇要為其建立 Fargate 設定檔的叢集,並選取組態索引標籤,然後選取運算索引標籤。

  4. INTERFargate 輪廓中,選擇新增 Fargate 輪廓

  5. 設定 Fargate 描述檔頁面上,輸入下列資訊,然後選擇下一頁

    1. 適用於名稱,輸入您 Fargate 個人檔案的唯一名稱,例如my-profile

    2. 適用於Pod 執行角色下,選擇我的亞馬遜法門特性角色您在步驟 1 建立的角色。

    3. 選取子網路下拉列表並取消選擇任何具有Public的名稱。只有私有子網路支援在 Fargate 上執行的裝置。

  6. Configure pods selection (設定 Pod 選擇) 頁面,輸入下列資訊並選擇 Next (下一步)

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

  7. Review and create (檢閱和建立)頁面,檢閱 Fargate 個人資料的資訊並選擇建立

Managed nodes – Linux

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

建立您的 Amazon EC2 Linux 受管節點群組

  1. 為 Amazon VPC CNI 外掛程式建立 IAM 角色,並將所需的 Amazon EKS IAM 受管政策附加到該外掛程式。依預設,Amazon EKS 亞馬遜 VPC CNI 外掛程式會安裝在叢集上。外掛程式會將 VPC 中的 IP 位址指派給每個網繭。

    1. 將下列內容複製到名為的檔案cni-role-trust-policy.json。Replace<111122223333>(包括<>),並將換成您的帳戶 ID<XXXXXXXXXX45D83924220DC4815XXXXX>與最後一個/OpenID Connect 提供者 URL

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::<111122223333>:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.us-west-2.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>:sub": "system:serviceaccount:kube-system:aws-node" } } } ] }
    2. 為建立 IAM 角色。

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

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name myAmazonEKSCNIRole
  2. 將 VPC CNI 外掛程式使用的 Kubernetes 服務帳戶與 IAM 角色產生關聯。Replace<111122223333>(包括<>) 使用您的帳戶 ID。

    aws eks update-addon \ --cluster-name my-cluster \ --addon-name vpc-cni \ --service-account-role-arn arn:aws:iam::<111122223333>:role/myAmazonEKSCNIRole
  3. 建立節點 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. 將所需的 Amazon EKS 受管 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
  4. 開啟位於的 Amazon EKS 主控台https://console.aws.amazon.com/eks/home#/clusters

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

  6. 選取組態索引標籤。

  7. 組態索引標籤上,選取運算索引標籤,然後選擇Add 節點群組

  8. 配置節點群組頁面上,相應地填寫參數,接受剩餘的預設值,然後選擇下一頁

    • 名稱— 輸入受管節點群組的唯一名稱,例如my-nodegroup

    • 節點 IAM 角色名稱— 選擇我的亞馬遜諾德洛。在本入門指南中,此角色只能用於此節點群組,而不能用於其他節點群組。

  9. 設定計算和調整規模組態頁面中,接受預設值,然後選取下一頁

  10. 指定網路頁面上,選取要用於SSH key pair,然後選擇下一頁。若您沒有 key pair,您可以使用下列命令建立一個。如有必要請變更us-west-2新增至您建立叢集的區域。請務必將傳回輸出儲存至本機電腦上的檔案。如需詳細資訊,請參閱「」建立或匯入金鑰對《適用於 Linux Amazon EC2 使用者指南》中的 Linux 執行個體。雖然本指南中不需要此金鑰,但您只能在建立節點群組時指定要使用的金鑰。指定金鑰可讓您在建立節點後 SSH。

    aws ec2 create-key-pair --region us-west-2 --key-name myKeyPair
  11. Review and create (檢閱並建立) 頁面上,檢閱您的受管節點群組組態,然後選擇 Create (建立)

  12. 數分鐘後,狀態中的節點群組組態區段將從正在建立作用中。在狀態為之前,請勿繼續進行下一個步驟。作用中

步驟 5:檢視資源

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

檢視節點

  1. 在左側窗格中,選取叢集,然後在叢集,選取您建立之叢集的名稱,例如my-cluster (我的叢集

  2. 概觀索引標籤上,您可以看到節點已針對叢集部署的檔案。您可以選取節點的名稱,以查看有關節點的詳細資訊。如需您在此處看到的詳細資訊,請參閱View 節點

  3. 工作負載索引標籤上,您會看到預設部署到 Amazon EKS 叢集的工作負載清單。您可以選取工作負載的名稱,以查看其詳細資訊。如需您在此處看到的詳細資訊,請參閱檢視工作負載

步驟 6:刪除叢集和節點

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

刪除叢集和節點

  1. 刪除所有節點群組和 Fargate 設定檔。

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

    2. 在左側導覽中,選擇叢集,然後在叢集清單中選取您要刪除之叢集名稱。

    3. 選取組態索引標籤。在運算標籤上,選取:

      • 您在上一個步驟中建立的節點群組,並選取刪除。輸入節點群組的名稱,然後選取刪除

      • 所以此Fargate 輪廓,然後選取刪除。輸入設定檔的名稱,然後選取刪除

  2. 刪除叢集。

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

    2. 選取要刪除的叢集並選擇 Delete (刪除)

    3. 在刪除叢集確認畫面上,選擇 Delete (刪除)

  3. 刪除 VPCAWS CloudFormation堆疊,您在本指南中建立的。

    1. https://console.aws.amazon.com/cloudformation 開啟 AWS CloudFormation 主控台。

    2. 選取要刪除的 VPC 堆疊,然後選擇刪除

    3. 刪除堆疊確認畫面,選擇刪除堆疊

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

    1. 在以下網址開啟 IAM 主控台:https://console.aws.amazon.com/iam/

    2. 在左側導覽窗格中,選取角色

    3. 選取我的亞馬遜群組角色從清單中。選擇刪除角色,然後選取是,刪除。刪除我的亞馬遜法門特性角色我的亞馬遜諾德洛角色和我的亞馬遜角色角色 (如果您已建立)。

後續步驟

現在您已具備含節點的可正常運作的 Amazon EKS 叢集,您即可開始安裝 Kubernetes 外掛程式並將應用程式部署到叢集。以下文件主題可協助您擴展叢集的功能。