开始使用 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

先决条件

在开始使用本教程之前,您必须安装并配置创建和管理 Amazon EKS 集群所需的以下工具和资源。

  • kubectl – 用于与 Kubernetes 集群一起使用的命令行工具。有关更多信息,请参阅安装或更新 kubectl

  • eksctl – 用于处理 EKS 集群的命令行工具,该工具可自动执行许多单独任务。有关更多信息,请参阅安装或更新 eksctl

  • 所需的 IAM 权限 – 您正在使用的 IAM 安全主体必须具有使用 Amazon EKS IAM 角色、服务相关角色、AWS CloudFormation、VPC 和相关资源的权限。有关更多信息,请参阅 IAM 用户指南中的用于 Amazon Elastic Container Service for Kubernetes 的操作、资源和条件键使用服务相关角色。您必须以同一用户身份完成本指南中的所有步骤。要查看当前用户,请运行以下命令:

    aws sts get-caller-identity

第 1 步:创建 Amazon EKS 集群和节点

重要

为了尽可能简单快速地入门,本主题包括创建具有原定设置的集群和节点的步骤。在创建用于生产使用的集群和节点之前,我们建议您熟悉所有设置,并使用符合您要求的设置部署集群和节点。有关更多信息,请参阅 创建 Amazon EKS 集群Amazon EKS 节点。一些设置仅在创建集群和节点时可以启用。

您可以使用下列节点类型之一创建集群。要了解有关各个类型的更多信息,请参阅 Amazon EKS 节点。部署集群后,您可以添加其他节点类型。

  • Fargate - Linux - 如果要在 AWS Fargate 上运行 Linux 应用程序,请选择此类型的节点。Fargate 是一种无服务器计算引擎,允许部署 Kubernetes Pods,而不管理 Amazon EC2 实例。

  • 托管式节点 – Linux – 如果要在 Amazon EC2 实例上运行Amazon Linux 应用程序,请选择此类型的节点。虽然本指南中未作介绍,但您还可以向集群添加 Windows 自行管理节点和 Bottlerocket 节点。

使用以下命令创建 Amazon EKS 集群。您可以将 my-cluster 替换为自己的值。名称只能包含字母数字字符(区分大小写)和连字符。该名称必须以字母字符开头,且不得超过 100 个字符。将 region-code 替换为 Amazon EKS 支持的任一 AWS 区域。有关 AWS 区域列表,请参阅 AWS 一般参考中的 Amazon EKS 端点和配额

Fargate – Linux
eksctl create cluster --name my-cluster --region region-code --fargate
Managed nodes – Linux
eksctl create cluster --name my-cluster --region region-code

创建集群需要几分钟时间。在创建过程中,您将看到几行输出。输出的最后一行类似于以下示例行。

[...] [✓] EKS cluster "my-cluster" in "region-code" region is ready

eksctl~/.kube 中创建了一个 kubectl config 文件,或在计算机上的 ~/.kube 中的现有 config 文件添加了新集群的配置。

完成集群创建后,在 AWS CloudFormation 控制台 https://console.aws.amazon.com/cloudformation 中查看名为 eksctl-my-cluster-cluster 的 AWS CloudFormation 堆栈,查看创建的所有资源。

第 2 步:查看 Kubernetes 资源

  1. 查看您的集群节点。

    kubectl get nodes -o wide

    示例输出如下。

    Fargate – Linux
    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME fargate-ip-192-0-2-0.region-code.compute.internal Ready <none> 8m3s v1.2.3-eks-1234567 192.0.2.0 <none> Amazon Linux 2 1.23.456-789.012.amzn2.x86_64 containerd://1.2.3 fargate-ip-192-0-2-1.region-code.compute.internal Ready <none> 7m30s v1.2.3-eks-1234567 192-0-2-1 <none> Amazon Linux 2 1.23.456-789.012.amzn2.x86_64 containerd://1.2.3
    Managed nodes – Linux
    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME ip-192-0-2-0.region-code.compute.internal Ready <none> 6m7s v1.2.3-eks-1234567 192.0.2.0 192.0.2.2 Amazon Linux 2 1.23.456-789.012.amzn2.x86_64 containerd://1.2.3 ip-192-0-2-1.region-code.compute.internal Ready <none> 6m4s v1.2.3-eks-1234567 192.0.2.1 192.0.2.3 Amazon Linux 2 1.23.456-789.012.amzn2.x86_64 containerd://1.2.3

    如需详细了解输出中显示的内容,请参阅 查看 Kubernetes 资源

  2. 查看在集群上运行的工作负载。

    kubectl get pods -A -o wide

    示例输出如下。

    Fargate – Linux
    NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system coredns-1234567890-abcde 1/1 Running 0 18m 192.0.2.0 fargate-ip-192-0-2-0.region-code.compute.internal <none> <none> kube-system coredns-1234567890-12345 1/1 Running 0 18m 192.0.2.1 fargate-ip-192-0-2-1.region-code.compute.internal <none> <none>
    Managed nodes – Linux
    NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system aws-node-12345 1/1 Running 0 7m43s 192.0.2.1 ip-192-0-2-1.region-code.compute.internal <none> <none> kube-system aws-node-67890 1/1 Running 0 7m46s 192.0.2.0 ip-192-0-2-0.region-code.compute.internal <none> <none> kube-system coredns-1234567890-abcde 1/1 Running 0 14m 192.0.2.3 ip-192-0-2-3.region-code.compute.internal <none> <none> kube-system coredns-1234567890-12345 1/1 Running 0 14m 192.0.2.4 ip-192-0-2-4.region-code.compute.internal <none> <none> kube-system kube-proxy-12345 1/1 Running 0 7m46s 192.0.2.0 ip-192-0-2-0.region-code.compute.internal <none> <none> kube-system kube-proxy-67890 1/1 Running 0 7m43s 192.0.2.1 ip-192-0-2-1.region-code.compute.internal <none> <none>

    如需详细了解输出中显示的内容,请参阅 查看 Kubernetes 资源

第 3 步:删除集群和节点

在使用完成针对本教程而创建的集群和节点后,应使用下面的命令删除这些集群和节点,从而将它们清除。如果要在清除该集群前对其执行更多操作,请参阅 后续步骤

eksctl delete cluster --name my-cluster --region region-code

后续步骤

以下文档主题可帮助您扩展集群的此功能。