Amazon EKS 入門 – eksctl - Amazon EKS

Amazon EKS 入門 – eksctl

本指南可協助您安裝在將 Amazon Elastic Kubernetes Service (Amazon EKS) 和 eksctl 搭配使用所需的所有資源,後者是簡單的命令列公用程式,可用於在 Amazon EKS 上建立和管理 Kubernetes 叢集。此教學結束時,您將擁有一個執行中的 Amazon EKS 叢集,而您可以在其中部署應用程式。

本指南中的程序會為您自動建立數個資源,而您必須在使用AWS Management Console建立叢集時手動建立這些資源。如果您想要手動建立大部分的資源,並進一步了解它們彼此互動的方式,請使用 AWS Management Console 來建立叢集和運算。如需詳細資訊,請參閱Amazon EKS 入門– AWS Management Console和 AWS CLI

Prerequisites

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

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

步驟 1:建立 Amazon EKS 叢集和節點

建立叢集和節點

重要

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

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

  • Fargate – Linux – 如果您想要在 AWS Fargate 上執行 Linux 應用程式,請選取此節點類型。

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

選取您要用來建立叢集的節點類型的標籤。

Fargate – Linux

若要使用 Fargate Linux 節點建立您的叢集

  1. 搭配使用 AWS Fargate 描述檔Pod 執行角色 及以下命令建立您的 Amazon EKS 叢集。使用您自己的值取代 my-cluster。雖然您可以在任何 Amazon EKS 支援的區域中建立叢集,但在本教程中,它則是在美國西部 (奧勒岡) us-west-2 建立的。

    eksctl create cluster \ --name my-cluster \ --region us-west-2 \ --fargate

    之前的命令主要使用預設設定建立叢集和 Fargate 描述檔。建立完成後,檢視 AWS CloudFormation 主控台中名為 eksctl-<my-cluster>-cluster 的堆疊來檢閱所有建立的資源。如需所有設定和選項的清單,請輸入 eksctl create cluster -h。如需所有設定和選項的文件,請參閱 eksctl 文件中的建立和管理叢集

    輸出

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

    ... [✓] EKS cluster "my-cluster" in "us-west-2" region is ready

    如果節點無法加入叢集,請參閱故障診斷指南中的節點無法加入叢集

    eksctl 已在 ~/.kube 建立了 kubectl config 檔案,或將新叢集的組態新增至 ~/.kube 中的現有 config 檔案。

  2. 測試組態。

    kubectl get svc

    輸出

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

若要使用 Amazon EC2 Linux 受管節點建立叢集

建立叢集和 Linux 受管節點群組。使用您自己的值取代 my-cluster

使用現有金鑰對的名稱取代 <your-key> (包括 <>)。如果還沒有金鑰對,您可以使用下列命令建立一個。如有必要,請將 us-west-2 變更為您在其中建立叢集的區域。請務必將傳回輸出儲存至本機電腦上的檔案。如需詳細資訊,請參閱《適用於 Linux 執行個體的 Amazon EC2 使用者指南》中的建立或匯入金鑰對。雖然本指南中不需要此金鑰,但您只能在建立節點群組時指定要使用的金鑰。指定金鑰允許您在建立節點後使用 SSH 連線到節點。若要執行命令,您需要安裝 AWS CLI 版本 2.2.22 或更新版本或 1.20.6 或更新版本。如需詳細資訊,請參閱 AWS Command Line Interface 使用者指南中的安裝、更新和解除安裝 AWS CLI

aws ec2 create-key-pair --region us-west-2 --key-name myKeyPair

使用下列命令來建立叢集和節點。使用您自己的值取代範例值 (包括 <>)。雖然您可以在任何 Amazon EKS 支援的區域中建立叢集,但在本教程中,它則是在美國西部 (奧勒岡) us-west-2 建立的。

eksctl create cluster \ --name my-cluster \ --region us-west-2 \ --with-oidc \ --ssh-access \ --ssh-public-key <your-key> \ --managed

之前的命令主要使用預設 Amazon EKS 設定來建立具有節點的叢集。若要查看建立的所有資源,請檢視 AWS CloudFormation主控台中名為 eksctl-<my-cluster>-cluster 的堆疊:https://console.aws.amazon.com/cloudformation。如需所有設定和選項的清單,請輸入 eksctl create cluster -h。如需所有設定和選項的文件,請參閱 eksctl 文件中的建立和管理叢集

輸出

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

... [✓] EKS cluster "my-cluster" in "us-west-2" region is ready

eksctl 已在 ~/.kube 建立了 kubectl config 檔案,或將新叢集的組態新增至 ~/.kube 中的現有 config 檔案。

步驟 2:檢視資源

  1. 檢視叢集節點。

    kubectl get nodes -o wide

    Amazon EC2 節點輸出

    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME ip-192-168-12-49.us-west-2.compute.internal Ready <none> 6m7s v1.18.9-eks-d1db3c 192.168.12.49 52.35.116.65 Amazon Linux 2 4.14.209-160.335.amzn2.x86_64 docker://19.3.6 ip-192-168-72-129.us-west-2.compute.internal Ready <none> 6m4s v1.18.9-eks-d1db3c 192.168.72.129 44.242.140.21 Amazon Linux 2 4.14.209-160.335.amzn2.x86_64 docker://19.3.6

    Fargate 節點輸出

    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME fargate-ip-192-168-141-147.us-west-2.compute.internal Ready <none> 8m3s v1.18.8-eks-7c9bda 192.168.141.147 <none> Amazon Linux 2 4.14.209-160.335.amzn2.x86_64 containerd://1.3.2 fargate-ip-192-168-164-53.us-west-2.compute.internal Ready <none> 7m30s v1.18.8-eks-7c9bda 192.168.164.53 <none> Amazon Linux 2 4.14.209-160.335.amzn2.x86_64 containerd://1.3.2

    如需有關您在此處看到的內容的詳細資訊,請參閱檢視節點

  2. 檢視叢集上執行的工作負載。

    kubectl get pods --all-namespaces -o wide

    Amazon EC2 輸出

    NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system aws-node-6ctpm 1/1 Running 0 7m43s 192.168.72.129 ip-192-168-72-129.us-west-2.compute.internal <none> <none> kube-system aws-node-cbntg 1/1 Running 0 7m46s 192.168.12.49 ip-192-168-12-49.us-west-2.compute.internal <none> <none> kube-system coredns-559b5db75d-26t47 1/1 Running 0 14m 192.168.78.81 ip-192-168-72-129.us-west-2.compute.internal <none> <none> kube-system coredns-559b5db75d-9rvnk 1/1 Running 0 14m 192.168.29.248 ip-192-168-12-49.us-west-2.compute.internal <none> <none> kube-system kube-proxy-l8pbd 1/1 Running 0 7m46s 192.168.12.49 ip-192-168-12-49.us-west-2.compute.internal <none> <none> kube-system kube-proxy-zh85h 1/1 Running 0 7m43s 192.168.72.129 ip-192-168-72-129.us-west-2.compute.internal <none> <none>

    Fargate 輸出

    NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system coredns-69dfb8f894-9z95l 1/1 Running 0 18m 192.168.164.53 fargate-ip-192-168-164-53.us-west-2.compute.internal <none> <none> kube-system coredns-69dfb8f894-c8v66 1/1 Running 0 18m 192.168.141.147 fargate-ip-192-168-141-147.us-west-2.compute.internal <none> <none>

    如需有關您在此處看到的內容的詳細資訊,請參閱檢視工作負載

步驟 3:刪除您的叢集和節點

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

刪除叢集和節點

eksctl delete cluster --name my-cluster --region us-west-2

後續步驟

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