入门 Amazon EKS – eksctl - Amazon EKS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

入门 Amazon EKS – eksctl

本指南可帮助您使用 (Amazon Elastic Kubernetes Service用于在 上创建和管理 Kubernetes 集群的简单命令行实用程序)创建开始使用 Amazon EKS (eksctl) 所需的所有资源Amazon EKS。在本教程结束时,您将获得一个可将应用程序部署到的正在运行的Amazon EKS集群。

本指南中的过程会自动为您创建一些资源,您在使用 创建集群时必须手动创建这些资源AWS 管理控制台。如果您希望手动创建大多数资源以更好地了解它们之间的交互方式,请使用 AWS 管理控制台 创建集群和计算。有关更多信息,请参阅Amazon EKS – AWS 管理控制台 和 入门 AWS CLI.

Prerequisites

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

  • kubectl – 用于处理 Kubernetes 集群的命令行工具。本指南要求您使用 版本 1.18 或更高版本。有关更多信息,请参阅安装 kubectl.

  • eksctl – 一个命令行工具,用于处理 EKS 集群,可自动执行许多单独的任务。本指南要求您使用 版本 0.36.0 或更高版本。有关更多信息,请参阅eksctl 命令行实用程序.

  • 必需IAM权限 – 您所使用的IAM安全委托人必须有权使用 Amazon EKS IAM 角色和服务相关角色AWS CloudFormation、 以及 VPC 和相关资源。有关更多信息,请参阅 中的 Amazon Elastic Container Service for Kubernetes 的操作、资源和条件键和使用服务相关角色IAM 用户指南。您必须作为同一用户完成本指南中的所有步骤。

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

创建 集群和节点。

重要

要尽快开始使用,本主题包含使用默认设置创建集群和节点的步骤。在创建集群和节点用于生产用途之前,我们建议您熟悉所有设置,并部署具有满足您要求的设置的集群和节点。有关更多信息,请参阅 创建 Amazon EKS 集群Amazon EKS 个节点.

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

  • Fargate – Linux 如果要在 上运行 Linux 应用程序–,请选择此类型的节点AWS Fargate。

  • 托管节点 – Linux 如果要在 – 实例上运行Amazon Linux应用程序Amazon EC2,请选择此类型的节点。虽然本指南中未作介绍,但您也可以将 Windows 自行管理和 Botterrocket 节点添加到您的集群。集群必须至少包含一个 Linux 节点,即使您的所有工作负载都是 Windows。

选择带有您要用来创建集群的节点类型名称的选项卡。

Fargate – Linux

使用 Fargate Linux 节点创建集群

  1. 使用 Amazon EKS 和 AWS Fargate 配置文件 通过以下命令创建Pod 执行角色集群。将 my-cluster 替换为您自己的值。虽然您可以在任何Amazon EKS受支持的 区域中创建集群,但在本教程中,该集群是在 美国西部(俄勒冈) us-west-2 中创建的。

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

    上一个命令使用主要默认设置创建集群和Fargate配置文件。创建完成后eksctl-<my-cluster>-cluster,在 AWS CloudFormation 控制台中查看名为 的堆栈以查看已创建的所有资源。有关所有设置和选项的列表,请输入 eksctl create cluster -h。 有关所有设置和选项的文档,请参阅 文档中的创建和管理集群eksctl

    输出

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

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

    如果节点无法加入集群,请参阅《故障排除指南》中的节点无法加入集群

    eksctl 在 中创建kubectlconfig了一个文件~/.kube,或在 的现有config文件中添加了新集群的配置~/.kube

  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 替换为您自己的值,并将 us-west-2 替换为任何Amazon EKS受支持的区域。如果您要部署到 非洲(开普敦)、亚太地区(香港)、 欧洲(米兰)或 中东(巴林) 区域,则必须为您的账户启用 终端节点。有关更多信息,请参阅在 AWS STS 区域中激活和停用 AWS. 默认情况下,为所有其他区域启用终端节点。

    <your-key> (包括 <>)替换为现有密钥对的名称。如果您没有密钥对,可以使用以下命令创建一个。如有必要,us-west-2请更改为您在其中创建集群的区域。请务必将返回输出保存在本地计算机上的文件中。有关更多信息,请参阅 中的创建或导入密钥对Amazon EC2 用户指南(适用于 Linux 实例)。

    虽然本指南中不需要 键,但您只能指定在创建节点组时使用的键。指定密钥后,您可以通过 SSH 连接到节点。要运行 命令,您需要具有 AWS CLI 版本 2.1.16 或更高版本1.18.210或更高版本。有关更多信息,请参阅 中的安装、更新和卸载 AWS AWS Command Line Interface 用户指南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默认设置创建包含节点的集群。要查看创建的所有资源eksctl-<my-cluster>-cluster,请在位于 的 AWS CloudFormation 控制台中查看名为 的堆栈https://console.aws.amazon.com/cloudformation。有关所有设置和选项的列表,请输入 eksctl create cluster -h。 有关所有设置和选项的文档,请参阅 文档中的创建和管理集群eksctl

    输出

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

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

    eksctl 在 中创建kubectlconfig了文件~/.kube,或在 中的现有config文件内添加了新集群的配置~/.kube

步骤 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

    有关您在此处看到的内容的更多信息,请参阅View 节点

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

    kubectl get pods --all-namespaces -o wide

    Amazon EC2 output

    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 output

    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

后续步骤

现在,您有一个正常工作的具有节点的Amazon EKS集群,您已准备好开始安装 Kubernetes 插件并将应用程序部署到集群。以下文档主题可帮助您扩展集群的此功能。