

 **帮助改进此页面** 

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

# 开始使用 Amazon EKS – AWS 管理控制台和 AWS CLI
<a name="getting-started-console"></a>

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

本指南帮助您创建通过 AWS 管理控制台和 AWS CLI 开始使用 Amazon Elastic Kubernetes Service（Amazon EKS）所需的所有资源。在本指南中，您将手动创建每个资源。在本教程的最后，将为您提供一个运行中的 Amazon EKS 集群，您可向其部署应用程序。

本指南中的步骤可让您完全了解每个资源的创建方式以及资源之间如何相互交互。如果您希望系统自动为您创建大部分资源，请使用 `eksctl` CLI 创建集群和节点。有关更多信息，请参阅 [开始使用 Amazon EKS – `eksctl`](getting-started-eksctl.md)。

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

在开始使用本教程之前，您必须安装并配置创建和管理 Amazon EKS 集群所需的以下工具和资源。
+  **AWS CLI** – 与 AWS 服务（包括 Amazon EKS）结合使用的命令行工具。有关更多信息，请参阅《AWS 命令行界面用户指南》中的[安装](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)。在安装 AWS CLI 后，建议您还要对其进行配置。有关更多信息，请参阅《AWS 命令行界面用户指南》中的[使用 aws configure 快速配置](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)。请注意，需要 AWS CLI v2 才能使用本页中显示的 **update-kubeconfig** 选项。
+  **`kubectl`** – 用于与 Kubernetes 集群一起使用的命令行工具。有关更多信息，请参阅 [设置 `kubectl` 和 `eksctl`](install-kubectl.md)。
+  **所需的 IAM 权限** – 您正在使用的 IAM 安全主体必须具有使用 Amazon EKS IAM 角色、服务相关角色、AWS CloudFormation、VPC 和相关资源的权限。有关更多信息，请参阅《IAM 用户指南》中的[操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html)和[编辑服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)。您必须以同一用户身份完成本指南中的所有步骤。要查看当前用户，请运行以下命令：

  ```
  aws sts get-caller-identity
  ```

我们建议您在 Bash Shell 中完成本主题中的步骤。如果您没有使用 Bash Shell，则某些脚本命令（例如行延续字符以及变量的设置和使用方式）需要调整 Shell。此外，您的 Shell 的引用和转义规则可能有所不同。有关更多信息，请参阅《AWS 命令行界面用户指南》中的[在 AWS CLI 中将引号和字符串结合使用](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html)。

## 第 1 步：创建 Amazon EKS 集群
<a name="eks-create-cluster"></a>

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

1. 创建具有公有和私有子网且符合 Amazon EKS 要求的 Amazon VPC。请将 *region-code* 替换为 Amazon EKS 支持的任何 AWS 区域。有关 AWS 区域列表，请参阅《AWS 一般参考》指南中的 [Amazon EKS 服务端点和配额](https://docs.aws.amazon.com/general/latest/gr/eks.html)。可以将 *my-eks-vpc-stack* 替换为您任选的名称。

   ```
   aws cloudformation create-stack \
     --region region-code \
     --stack-name my-eks-vpc-stack \
     --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
   ```
**提示**  
如需查看上一个命令创建的所有资源的列表，请打开 AWS CloudFormation 控制台（https://console.aws.amazon.com/cloudformation/）。选择 *my-eks-vpc-stack* 堆栈，然后选择 **Resources**（资源）选项卡。

1. 创建一个集群 IAM 角色，并将所需的 Amazon EKS IAM 托管式策略附加到该角色。Amazon EKS 托管的 Kubernetes 集群会代表您调用其他AWS服务，以管理您用于该服务的资源。

   1. 将以下内容复制到名为 *eks-cluster-role-trust-policy.json* 的文件中。

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "eks.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

   1. 创建角色。

      ```
      aws iam create-role \
        --role-name myAmazonEKSClusterRole \
        --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
      ```

   1. 将所需的 Amazon EKS 托管 IAM policy 附加到角色。

      ```
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \
        --role-name myAmazonEKSClusterRole
      ```

1. 访问 [https://console.aws.amazon.com/eks/home\$1/clusters](https://console.aws.amazon.com/eks/home#/clusters) 打开 Amazon EKS 控制台。

   确保在 AWS 控制台右上角显示的区域是您要在其中创建集群的 AWS 区域。如果不是，请选择 AWS 区域名称旁边的下拉菜单，然后选择要使用的 AWS 区域。

1. 选择**创建集群**。如果没有看到此选项，请先选择左侧导航面板中的**集群**。

1. 在 **Configure cluster**（配置集群）页面上，请执行以下操作：

   1. 选择**自定义配置**并禁用**使用 EKS 自动模式**。（如果您更喜欢 EKS 自动模式集群，请参阅[使用 AWS 管理控制台创建 EKS 自动模式集群](automode-get-started-console.md)。）

   1. 输入集群的**名称**，例如 *my-cluster*。名称只能包含字母数字字符（区分大小写）和连字符。该名称必须以字母数字字符开头，且不得超过 100 个字符。对于您在其中创建集群的 AWS 区域和 AWS 账户，该名称必须在其内具有唯一性。

   1. 对于 **Cluster Service Role**（集群服务角色），请选择 *myAmazonEKSClusterRole*。

   1. 其余设置保留为默认值，然后选择 **Next**（下一步）。

1. 在 **Specify networking**（指定联网）页面中，请执行以下操作：

   1. 请从 **VPC** 下拉列表中选择在上一步创建的 VPC ID。它类似于 *\$1 \$1 my-eks-vpc-stack-VPC*。

   1. 请从**子网**下拉列表中选择在上一步创建的子网。子网类似于 *\$1 \$1 my-eks-vpc-stack-\$1*。

   1. 请从**其他安全组**下拉列表中选择在上一步创建的安全组。安全组类似于 *\$1 \$1 my-eks-vpc-stack-ControlPlaneSecurityGroup-\$1*。

   1. 其余设置保留为默认值，然后选择 **Next**（下一步）。

1. 在**配置可观测性**页面上，选择**下一步**。

1. 在**选择附加组件**页中，选择**下一个**。

   有关附加组件的更多信息，请参阅 [Amazon EKS 附加组件](eks-add-ons.md)。

1. 在**配置选定的附加组件设置**页面上，选择**下一个**。

1. 在**审核和创建**页面，选择**创建**。

   集群名称右侧的集群状态会保持为**正在创建**几分钟，直至集群调配过程完成。在该状态变为**有效**之前，请勿继续执行下一步。
**注意**  
您可能会收到一个错误，指示请求中的可用区之一没有足够容量来创建 Amazon EKS 集群。如果发生这种情况，错误输出将包含可支持新集群的可用区。再次尝试使用至少两个位于您账户中支持的可用区的子网创建集群。有关更多信息，请参阅 [容量不足](troubleshooting.md#ice)。

## 第 2 步：将计算机配置为与您的集群通信
<a name="eks-configure-kubectl"></a>

在本部分中，您将为集群创建一个 `kubeconfig` 文件。此文件中的设置会启用 `kubectl` CLI 与您的集群进行通信。

在继续操作之前，请确保您已在步骤 1 中成功完成集群创建。

1. 为集群创建或更新 `kubeconfig` 文件。将 *region-code* 替换为您要在其中创建集群的 AWS 区域。将 *my-cluster* 替换为您的集群的名称。

   ```
   aws eks update-kubeconfig --region region-code --name my-cluster
   ```

   默认情况下，`config` 文件创建在 `~/.kube` 中或者新集群的配置已添加到 `~/.kube` 的现有 `config` 文件中。

1. 测试配置。

   ```
   kubectl get svc
   ```
**注意**  
如果您收到任何授权或资源类型错误，请参阅故障排除主题中的 [未经授权或访问被拒绝 (`kubectl`)](troubleshooting.md#unauthorized)。

   示例输出如下。

   ```
   NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
   svc/kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   1m
   ```

## 第 3 步：创建节点
<a name="eks-launch-workers"></a>

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

此过程将集群配置为使用托管式节点组来创建节点，指定您在之前步骤中创建的子网和节点 IAM 角色。这让您可以在 Amazon EC2 实例上运行 Amazon Linux 应用程序。

要详细了解在 EKS 中配置节点的不同方法，请参阅[使用节点来管理计算资源](eks-compute.md)。部署集群后，您可以添加其他节点类型。虽然本指南中未作介绍，但您还可以向集群添加 [Windows 自托管节点](launch-windows-workers.md)和 [Bottlerocket](launch-node-bottlerocket.md) 节点。

 **创建 EC2 Linux 托管节点组** 

1. 创建节点 IAM 角色并向其附加所需的 Amazon EKS IAM 托管策略。Amazon EKS 节点 `kubelet` 守护进程代表您调用 AWS API。节点通过 IAM 实例配置文件和关联的策略获得这些 API 调用的权限。

   1. 将以下内容复制到名为 `node-role-trust-policy.json` 的文件中。

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

   1. 创建节点 IAM 角色。

      ```
      aws iam create-role \
        --role-name myAmazonEKSNodeRole \
        --assume-role-policy-document file://"node-role-trust-policy.json"
      ```

   1. 将所需的托管 IAM policy 附加到角色。

      ```
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \
        --role-name myAmazonEKSNodeRole
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \
        --role-name myAmazonEKSNodeRole
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \
        --role-name myAmazonEKSNodeRole
      ```

   1. 从以下位置打开 Amazon EKS 控制台：[https://console.aws.amazon.com/eks/home\$1/clusters](https://console.aws.amazon.com/eks/home#/clusters)。

   1. 选择您在[步骤 1：创建 Amazon EKS 集群](#eks-create-cluster)中创建的集群的名称，例如 *my-cluster*。

   1. 在 ***my-cluster*** 页面上，请执行以下操作：

   1. 请选择 **Compute**（计算）选项卡。

   1. 请选择 **Add Node Group**（添加节点组）。

1. 在 **Configure Node Group**（配置节点组）页面上，请执行以下操作：

   1. 对于**名称**，输入托管节点组的唯一名称，例如 *my-nodegroup*。节点组名称的长度不能超过 63 个字符。它必须以字母或数字开头，但也可以包括其余字符的连字符和下划线。

   1. 对于 **Node IAM role name**（节点 IAM 角色名称），请选择您在上一步中创建的 *myAmazonEKSNodeRole* 角色。我们建议让每个节点组使用各自的唯一 IAM 角色。

   1. 选择**下一步**。

1. 请在 **Set compute and scaling configuration**（设置计算和扩缩配置）页面上，接受默认值并选择 **Next**（下一步）。

1. 请在 **Specify networking**（指定联网）页面，接受默认值，选择 **Next**（下一步）。

1. 在 **Review and create (审核并创建)** 页面上，审核托管节点组配置并选择 **Create (创建)**。

1. 几分钟后，**Node Group configuration（节点组配置）**部分中的 **Status（状态）**将从 **Creating（正在创建）**变为 **Active（有效）**。在该状态变为**有效**之前，请勿继续执行下一步。

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

您可以查看节点和 Kubernetes 工作负载。

1. 在左侧导航窗格中，选择**集群**。在 **Clusters**（集群）列表中，选择您创建的集群名称，例如 *my-cluster*。

1. 在 ***my-cluster*** 页面上，选择以下选项：

   1.  **计算**选项卡：您可以看到为集群部署的**节点**列表。您可以选择节点的名称以查看有关该节点的详细信息。

   1.  **资源**选项卡 – 您将看到默认情况下部署到 Amazon EKS 集群的所有 Kubernetes 资源。在控制台中选择任何资源类型以了解有关它的更多信息。

## 第 5 步：删除资源
<a name="gs-console-clean-up"></a>

在使用完成针对本教程而创建的集群和节点后，应删除这些资源。如果要在删除资源前对此集群执行更多操作，请参阅 [后续步骤](#gs-console-next-steps)。

1. 删除您创建的任何节点组配置文件。

   1. 访问 [https://console.aws.amazon.com/eks/home\$1/clusters](https://console.aws.amazon.com/eks/home#/clusters) 打开 Amazon EKS 控制台。

   1. 在左侧导航窗格中，选择**集群**。请在集群列表中，选择 *my-cluster*。

   1. 请选择 **Compute**（计算）选项卡。

   1. 如果您创建了节点组，请选择 *my-nodegroup* 节点组，然后选择 **Delete**（删除）。输入 *my-nodegroup*，然后选择**删除**。

   1. 在节点组配置文件删除后再继续操作。

1. 请删除集群。

   1. 在左侧导航窗格中，选择**集群**。请在集群列表中，选择 *my-cluster*。

   1. 选择**删除集群**。

   1. 输入 *my-cluster*，然后选择**删除**。在集群删除后再继续操作。

1. 删除创建的 VPC AWS CloudFormation 堆栈。

   1. 通过以下网址打开 CloudFormation 控制台：https://console.aws.amazon.com/cloudformation/。

   1. 请选择 *my-eks-vpc-stack* 堆栈，然后选择 **Delete**（删除）。

   1. 在**删除 *my-eks-vpc-stack*** 确认对话框中，选择**删除堆栈**。

1. 删除您创建的 IAM 角色。

   1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

   1. 在左侧导航窗格中，选择 **角色**。

   1. 请从列表中选择您创建的每个角色（***myAmazonEKSClusterRole*** 以及 *myAmazonEKSNodeRole*）。请选择 **Delete**（删除），输入请求的确认文本，然后选择 **Delete**（删除）。

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

以下文档主题可帮助您扩展集群的此功能。
+ 创建集群的 [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)。
+ 将[示例应用程序](sample-deployment.md)部署到您的集群。
+ 在部署集群用于生产用途前，我们建议您熟悉[集群](create-cluster.md)和[节点](eks-compute.md)的所有设置。创建集群时必须进行一些设置（例如启用 SSH 访问 Amazon EC2 节点）。
+ 为了提高集群的安全性，请[配置 Amazon VPC 容器网络接口插件以将 IAM 角色用于服务账户](cni-iam-role.md)。