设置 Amazon EKS 集群 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

设置 Amazon EKS 集群

Amazon EKS 是一项托管式服务,可让您在Amazon上轻松运行 Kubernetes,而无需安装、操作和维护您自己的 Kubernetes 控制层面和节点。按照下方所述的步骤创建具有 Amazon EKS 节点的新 Kubernetes 集群。

先决条件

重要

在创建 Amazon EKS 集群之前,请完成《Amazon EKS 用户指南中》Amazon EKS VPC 和子网要求和注意事项,确保 Amazon EKS 集群按预期运行和扩展。

您必须安装并配置创建和管理 Amazon EKS 集群所需的以下工具和资源:

  • 最新版本的 Amazon CLI。

  • kubectl 版本 1.20 或更高版本。

  • 最新版本的 eksctl

有关更多信息,请参阅 安装 Amazon CLI安装 kubectl安装 eksctl

使用 eksctl 创建 Amazon EKS 集群

请按照以下步骤使用 eksctl 创建 Amazon EKS 集群。

重要

要快速入门,您可以使用默认设置创建 EKS 集群和节点。但是,对于生产用途,我们建议您自定义集群和节点的设置,以满足您的特定要求。有关所有设置和选项的列表,请运行命令 eksctl create cluster -h。有关更多信息,请参阅 eksctl 文档中的创建和管理集群

  1. 创建 Amazon EC2 密钥对。

    如果您没有现有密钥对,则可以运行以下命令以创建新的密钥对。用您要创建集群的区域来替换 us-west-2

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

    将返回的输出保存在本地计算机上的文件中。有关更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的创建或导入密钥对

    注意

    创建 EKS 集群时不需要密钥对。但是,指定密钥对允许您在创建节点后对节点进行 SSH 访问。只有在创建节点组时,您才能指定密钥对。

  2. 创建 EKS 集群。

    运行以下命令创建 EKS 集群和节点。使用您自己的集群名称和密钥对名称来替换 my-clustermyKeyPair。用您要创建集群的区域来替换 us-west-2。有关 Amazon EKS 支持的区域的更多信息,请参阅 Amazon Elastic Kubernetes Service 终端节点和配额

    eksctl create cluster \ --name my-cluster \ --region us-west-2 \ --with-oidc \ --ssh-access \ --ssh-public-key myKeyPair \ --instance-types=m5.xlarge \ --managed
    重要

    创建 EKS 集群时,请使用 m5.xlarge 作为实例类型,或使用具有较高 CPU 和内存的任何其它实例类型。与 m5.xlarge 相比,使用具有较低 CPU 或内存的实例类型可能会由于集群中可用资源不足而导致任务失败。要查看已创建的所有资源,请在 Amazon Cloud Formation 控制台中查看名为 eksctl-my-cluster-cluster 的堆栈。

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

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

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

  3. 查看和验证资源

    运行以下命令,查看您的集群节点。

    kubectl get nodes -o wide

    下面显示了示例输出。

    Amazon EC2 node output 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

    有关更多信息,请参阅查看节点

    使用以下命令查看集群上运行的工作负载。

    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

    有关您在此处看到的更多信息,请参阅查看工作负载

使用Amazon Web Services Management Console和 Amazon CLI 创建 EKS 集群

您还可以使用Amazon Web Services Management Console和 Amazon CLI 创建 EKS 集群。按 Amazon EKS 入门 - Amazon Web Services Management Console和 Amazon CLI 中的步骤操作。这可让您完全了解每个资源针对 EKS 集群的创建方式以及资源之间如何相互交互。

重要

创建 EKS 集群节点时,请使用 m5.xlarge 作为实例类型,或使用具有较高 CPU 和内存的任何其它实例类型。

使用 Amazon Fargate 创建 EKS 集群

您还可以使用运行在 Amazon Fargate 的 Pod 来创建 EKS 集群。

  1. 要使用运行在 Fargate 的 Pod 来创建 EKS 集群,请按照通过 Amazon EKS 开始使用 Amazon Fargate 中的步骤操作。

    注意

    Amazon EMR on EKS 需要 CoreDNS 以在 EKS 集群上运行任务。如果您只想在 Fargate 上运行您的 Pod,您必须遵循更新 CoreDNS 中的步骤。

  2. 运行以下命令,查看您的集群节点。

    kubectl get nodes -o wide

    下面显示了一个 Fargate 输出的示例。

    Fargate node output 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

    有关更多信息,请参阅查看节点

  3. 运行以下命令,查看集群上运行的工作负载。

    kubectl get pods --all-namespaces -o wide

    下面显示了一个 Fargate 输出的示例。

    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

    有关更多信息,请参阅查看工作负载