

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 开始使用 Amazon EKS – `eksctl`
<a name="getting-started-eksctl"></a>

**注意**  
本主题介绍在**不启用** EKS 自动模式的情况下开始使用。  
EKS 自动模式可自动执行集群计算、存储和联网等方面的例行任务。[了解如何开始使用 Amazon EKS 自动模式。](getting-started-automode.md)

此指南可帮助您使用 `eksctl`（用于在 Amazon EKS 上创建和管理 Kubernetes 集群的简单命令行实用程序）来安装开始使用 Amazon Elastic Kubernetes Service (Amazon EKS) 所需的所有资源。在本教程的最后，将为您提供一个运行中的 Amazon EKS 集群，您可向其部署应用程序。

本指南中的程序可自动为您创建在您使用 AWS 管理控制台 创建集群时必须手动创建的一些资源。如果您希望手动创建大多数资源并更好地了解它们之间的交互方式，请使用 AWS 管理控制台创建集群和执行计算。有关更多信息，请参阅 [开始使用 Amazon EKS – AWS 管理控制台和 AWS CLI](getting-started-console.md)。

## 先决条件
<a name="eksctl-prereqs"></a>

在开始使用本教程之前，您必须按[设置以使用 Amazon EKS](setting-up.md) 中所述安装并配置 AWS CLI、kubectl 和 eksctl 工具。

## 第 1 步：创建 Amazon EKS 集群和节点
<a name="create-cluster-gs-eksctl"></a>

**重要**  
为了尽可能简单快速地入门，本主题包括创建具有原定设置的集群和节点的步骤。在创建用于生产使用的集群和节点之前，我们建议您熟悉所有设置，并使用符合您要求的设置部署集群和节点。有关更多信息，请参阅 [创建一个 Amazon EKS 集群。](create-cluster.md) 和 [使用节点来管理计算资源](eks-compute.md)。一些设置仅在创建集群和节点时可以启用。

您可以使用下列节点类型之一创建集群。要了解有关各个类型的更多信息，请参阅 [使用节点来管理计算资源](eks-compute.md)。部署集群后，您可以添加其他节点类型。
+  **Fargate – Linux** – 如果要在 [使用 AWS Fargate 简化计算管理](fargate.md) 上运行 Linux 应用程序，请选择此类型的节点。Fargate 是一种无服务器计算引擎，允许部署 Kubernetes Pod 而不管理 Amazon EC2 实例。
+  **托管式节点 – Linux** – 如果要在 Amazon EC2 实例上运行Amazon Linux 应用程序，请选择此类型的节点。虽然本指南中未作介绍，但您还可以向集群添加 [Windows 自托管](launch-windows-workers.md)节点和 [Bottlerocket](launch-node-bottlerocket.md) 节点。

使用以下命令创建 Amazon EKS 集群。将 *my-cluster* 替换为您自己的值。名称只能包含字母数字字符（区分大小写）和连字符。该名称必须以字母数字字符开头，且不得超过 100 个字符。对于您在其中创建集群的 AWS 区域和 AWS 账户，该名称必须在其内具有唯一性。请将 *region-code* 替换为 Amazon EKS 支持的任何 AWS 区域。有关 AWS 区域列表，请参阅《AWS 一般参考》指南中的 [Amazon EKS 服务端点和配额](https://docs.aws.amazon.com/general/latest/gr/eks.html)。

**Example**  

```
eksctl create cluster --name my-cluster --region region-code --fargate
```

```
eksctl create cluster --name my-cluster --region region-code
```

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

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

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

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

## 第 2 步：查看 Kubernetes 资源
<a name="gs-eksctl-view-resources"></a>

1. 查看您的集群节点。

   ```
   kubectl get nodes -o wide
   ```

   示例输出如下。  
**Example**  

------
#### [ 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
   ```

------

   如需详细了解输出中显示的内容，请参阅 [在 AWS 管理控制台中查看 Kubernetes 资源](view-kubernetes-resources.md)。

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

   ```
   kubectl get pods -A -o wide
   ```

   示例输出如下。  
**Example**  

------
#### [ 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>
   ```

------

   如需详细了解输出中显示的内容，请参阅 [在 AWS 管理控制台中查看 Kubernetes 资源](view-kubernetes-resources.md)。

## 第 3 步：删除集群和节点
<a name="gs-eksctl-clean-up"></a>

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

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

## 后续步骤
<a name="gs-eksctl-next-steps"></a>

以下文档主题可帮助您扩展集群的此功能。
+ 将[示例应用程序](sample-deployment.md)部署到您的集群。
+ 创建集群的 [IAM 主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)是唯一可以使用 `kubectl` 或 AWS 管理控制台 调用 Kubernetes API 服务器的主体。如果您希望其他 IAM 主体拥有访问您的集群的权限，您需要添加它们。有关更多信息，请参阅[向 IAM 用户和角色授予对 Kubernetes API 的访问权限](grant-k8s-access.md) 和[所需的权限](view-kubernetes-resources.md#view-kubernetes-resources-permissions)。
+ 我们建议您先熟悉[集群](create-cluster.md)和[节点](eks-compute.md)的所有设置，然后再部署集群用于生产环境。创建集群时必须进行一些设置（例如启用 SSH 访问 Amazon EC2 节点）。
+ 为了提高集群的安全性，请[配置 Amazon VPC 容器网络接口插件以将 IAM 角色用于服务账户](cni-iam-role.md)。