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

協助改善此頁面

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

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

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

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

注意

本主題涵蓋不使用EKS自動模式的入門。

EKS 自動模式可自動化叢集運算、儲存和聯網的例行任務。了解如何開始使用 Amazon EKS Auto 模式。

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

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

必要條件

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

  • AWS CLI – 使用 AWS 服務的命令列工具,包括 Amazon EKS。如需詳細資訊,請參閱《 AWS 命令列界面使用者指南》中的安裝。安裝 之後 AWS CLI,建議您也進行設定。如需詳細資訊,請參閱 AWS 命令列界面使用者指南中的具有 aws 設定的快速組態。請注意, AWS CLI使用此頁面中顯示的 update-kubeconfig 選項需要 v2。

  • kubectl – 使用 的命令列工具 Kubernetes 叢集。如需詳細資訊,請參閱設定 kubectl 和 eksctl

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

    aws sts get-caller-identity

建議您在 Bash shell 中完成本主題中的步驟。如果您不使用 Bash shell,則某些指令碼命令,例如換行字元和變數的設定和使用方式需要調整您的 shell。此外,您的 Shell 的引用及轉義規則可能會有所不同。如需詳細資訊,請參閱《 AWS 命令列界面使用者指南》中的使用引號搭配 中的字串 AWS CLI

步驟 1:建立 Amazon EKS叢集

重要

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

  1. 建立VPC具有符合 Amazon EKS要求的公有和私有子網路的 Amazon。region-code 將 取代為 Amazon 支援的任何 AWS 區域EKS。如需 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
    提示

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

  2. 建立叢集IAM角色,並將所需的 Amazon EKSIAM受管政策連接到該角色。Kubernetes 由 Amazon 管理的 叢集會代表您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. 開啟位於 https://console.aws.amazon.com/eks/home#/clusters 的 Amazon EKS主控台。

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

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

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

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

    2. 針對叢集服務角色,選擇 myAmazonEKSClusterRole

    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 (建立)。

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

    注意

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

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

在此區段中,您會為叢集建立 kubeconfig 檔案。此檔案中的設定可讓 與您的叢集kubectlCLI通訊。

在繼續之前,請確定已在步驟 1 中成功完成叢集建立。

  1. 為您的叢集建立或更新 kubeconfig 檔案。region-code 將 取代 AWS 為您建立叢集的區域。使用您叢集的名稱取代 my-cluster

    aws eks update-kubeconfig --region region-code --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:建立節點

重要

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

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

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

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

Fargate - Linux

建立 Fargate 設定檔。當 Kubernetes Pods 部署的條件符合描述檔中定義的條件,Pods 部署到 Fargate。

建立 Fargate 設定檔

  1. 建立 IAM角色,並將所需的 Amazon EKSIAM受管政策連接至該角色。當您的叢集建立 Pods 在 Fargate 基礎設施上,在 Fargate 基礎設施上執行的元件必須代表您呼叫 AWS APIs。如此一來,他們可以執行動作,例如從 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
    4. 開啟位於 https://console.aws.amazon.com/eks/home#/clusters 的 Amazon EKS主控台。

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

    6. my-cluster頁面上,執行下列動作:

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

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

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

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

    2. 針對 Pod 執行角色,選擇您在上一個步驟中建立的 AmazonEKSFargatePodExecutionRole

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

    4. 選擇 Next (下一步)

  3. 設定 上 Pod 選擇頁面,請執行下列動作:

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

    2. 選擇 Next (下一步)

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

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

  6. 如果您計劃部署所有 Pods 至 Fargate (不適用於 Amazon EC2節點),請執行下列動作來建立另一個 Fargate 設定檔,並執行預設名稱解析程式 (CoreDNSFargate 上的 )。

    注意

    如果您不這樣做,您目前不會有任何節點。

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

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

    3. 針對名稱,輸入 CoreDNS.

    4. 針對 Pod 執行角色,選擇您在上一個步驟中建立的 AmazonEKSFargatePodExecutionRole

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

    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 Pods.

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

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

Managed nodes - Linux

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

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

  1. 建立節點IAM角色,並將所需的 Amazon EKSIAM受管政策連接至節點角色。Amazon kubelet EKS節點協助程式會代表您呼叫 AWS APIs 。節點會透過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
    4. 開啟位於 https://console.aws.amazon.com/eks/home#/clusters 的 Amazon EKS主控台。

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

    6. my-cluster頁面上,執行下列動作:

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

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

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

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

    2. 針對節點IAM角色名稱,選擇您在上一個步驟中建立myAmazonEKSNodeRole的角色。我們建議每個節點群組使用自己的唯一IAM角色。

    3. 選擇 Next (下一步)

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

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

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

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

步驟 4:檢視資源

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

  1. 在左側導覽窗格中選擇 Clusters (叢集)。在叢集清單中,選擇您建立的叢集名稱,例如 my-cluster

  2. my-cluster頁面上,選擇下列項目:

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

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

步驟 5:刪除資源

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

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

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

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

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

    4. 如果您建立了節點群組,請選擇my-nodegroup節點群組,然後選擇刪除。輸入 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 主控台

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

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

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

    1. 開啟位於 IAM 的 https://console.aws.amazon.com/iam/ 主控台。

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

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

後續步驟

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

📝 在 上編輯此頁面 GitHub