

 **帮助改进此页面** 

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

# 将示例 inflate 工作负载部署到 Amazon EKS 自动模式集群
<a name="automode-workload"></a>

在本教程中，您将了解如何将示例工作负载部署到 EKS 自动模式集群，并观察其如何自动预置所需的计算资源。您将使用 `kubectl` 命令来观察集群行为，并亲眼见证自动模式如何在 AWS 上简化 Kubernetes 的操作。完成本教程后，您将了解 EKS 自动模式如何通过自动管理底层计算资源来响应工作负载部署，无需手动配置节点组。

## 先决条件
<a name="_prerequisites"></a>
+ Amazon EKS 自动模式集群。记下集群的名称和 AWS 区域。
+ 一个具有管理联网、计算和 EKS 资源的足够权限的 IAM 主体，例如用户或角色。
  + 有关更多信息，请参阅《IAM 用户指南》中的[创建角色并附加策略（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions_create-policies.html)。
+  已使用某个 IAM 身份 安装并配置了 `aws` CLI。
+  已安装 `kubectl` CLI 并连接到集群。
  + 有关更多信息，请参阅 [进行设置以使用 Amazon EKS](setting-up.md)。

## 第 1 步：检查现有的计算资源（可选）
<a name="_step_1_review_existing_compute_resources_optional"></a>

首先，使用 `kubectl` 列出集群上的节点池。

```
kubectl get nodepools
```

示例输出：

```
general-purpose
```

在本教程中，我们将部署一个配置为使用 `general-purpose` 节点池的工作负载。此节点池已内置在 EKS 自动模式中，包括微服务和 Web 应用程序等一般工作负载的合理默认值。您可以创建自己的节点池。有关更多信息，请参阅 [为 EKS 自动模式创建节点池](create-node-pool.md)。

然后，使用 `kubectl` 列出连接到集群的节点。

```
kubectl get nodes
```

如果您刚刚创建了 EKS 自动模式集群，则将没有任何节点。

在本教程中，您将部署一个示例工作负载。如果没有节点，或者现有节点不能满足工作负载的要求，EKS 自动模式将预置一个新节点。

## 第 2 步：将示例应用程序部署到集群
<a name="_step_2_deploy_a_sample_application_to_the_cluster"></a>

检查以下 Kubernetes 部署并将其另存为 `inflate.yaml` 

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: inflate
spec:
  replicas: 1
  selector:
    matchLabels:
      app: inflate
  template:
    metadata:
      labels:
        app: inflate
    spec:
      terminationGracePeriodSeconds: 0
      nodeSelector:
        eks.amazonaws.com/compute-type: auto
      securityContext:
        runAsUser: 1000
        runAsGroup: 3000
        fsGroup: 2000
      containers:
        - name: inflate
          image: public.ecr.aws/eks-distro/kubernetes/pause:3.7
          resources:
            requests:
              cpu: 1
          securityContext:
            allowPrivilegeEscalation: false
```

请注意，`eks.amazonaws.com/compute-type: auto` 选择器要求将工作负载部署到 Amazon EKS 自动模式节点上。

将部署应用到集群。

```
kubectl apply -f inflate.yaml
```

## 第 3 步：观察 Kubernetes 事件
<a name="_step_3_watch_kubernetes_events"></a>

使用以下命令观察 Kubernetes 事件，包括创建新节点。使用 `ctrl+c` 停止观察事件。

```
kubectl get events -w --sort-by '.lastTimestamp'
```

再次使用 `kubectl` 列出连接到集群的节点。记下新创建的节点。

```
kubectl get nodes
```

## 第 4 步：在 AWS 控制台中查看节点和实例
<a name="step_4_view_nodes_and_instances_in_the_shared_aws_console"></a>

您可以在 EKS 控制台中查看 EKS 自动模式节点，以及在 EC2 控制台中查看关联的 EC2 实例。

由 EKS 自动模式部署的 EC2 实例存在限制。您不能在 EKS 自动模式节点上运行任意命令。

## 第 5 步：删除部署
<a name="_step_5_delete_the_deployment"></a>

使用 `kubectl` 删除示例部署

```
kubectl delete -f inflate.yaml
```

如果集群中没有部署其他工作负载，则由 EKS 自动模式创建的节点将为空。

在默认配置中，EKS 自动模式会检测已空三十秒钟的节点，并将其终止。

使用 `kubectl` 或 EC2 控制台确认关联的实例已被删除。