开始使用 Amazon EKS – eksctl - Amazon EKS

开始使用 Amazon EKS – eksctl

此指南可帮助您使用 eksctl(用于在 Amazon EKS 上创建和管理 Kubernetes 集群的简单命令行实用程序)来安装开始使用 Amazon Elastic Kubernetes Service (Amazon EKS) 所需的所有资源。在本教程的最后,将为您提供一个运行中的 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 将密钥传输到节点。要运行命令,您需要已安装 2.2.22 版或更高版本或 1.20.6 版或更高版本的 AWS CLI。有关更多信息,请参阅 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 插件并将应用程序部署到您的集群。以下文档主题可帮助您扩展集群的此功能。