

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

# 设置 Amazon EMR on EKS 的垂直自动扩展
<a name="jobruns-vas-setup"></a>

本主题旨在帮助您设置好 Amazon EKS 集群，以便通过垂直自动扩展功能提交 Amazon EMR Spark 任务。设置过程要求您确认或完成以下各节中的任务：

**Topics**
+ [先决条件](#jobruns-vas-prereqs)
+ [在 Amazon EKS 集群上安装 Operator Lifecycle Manager（OLM）](#jobruns-vas-install-olm)
+ [安装 Amazon EMR on EKS 垂直自动扩展 Operator](#jobruns-vas-install-operator)

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

在集群上安装垂直自动扩展 Kubernetes Operator 之前，请完成以下任务。跳过已完成的先决条件，转到下一个先决条件。
+ **[安装或更新到最新版本的 Amazon CLI](https://docs.amazonaws.cn/cli/latest/userguide/getting-started-install.html)** — 如果您已经安装了 Amazon CLI，请确认您安装的是最新版本。
+ **[安装 kubectl](https://docs.amazonaws.cn/eks/latest/userguide/install-kubectl.html)**：kubectl 是一个命令行工具，用于与 Kubernetes API 服务器进行通信。在 Amazon EKS 集群上安装并监控与垂直自动扩展相关的构件，需要用到 kubectl。
+ **[安装 Operator SDK](https://sdk.operatorframework.io/docs/installation/)**：Amazon EMR on EKS 使用 Operator SDK 作为您在集群上安装的垂直自动扩展 Operator 生命周期的包管理器。
+ **[安装 Docker](https://docs.docker.com/get-docker/)**：您需要访问 Docker CLI，才能验证并获取要安装在 Amazon EKS 集群上的垂直自动扩展相关的 Docker 映像。
+ **[安装 Kubernetes Metrics Server](https://docs.amazonaws.cn/eks/latest/userguide/metrics-server.html)**：必须先安装 Metrics Server，垂直容器组（pod）Autoscaler 才能从 Kubernetes API 服务器获取指标。
+ **[开始使用 Amazon EKS - eksctl](https://docs.amazonaws.cn/eks/latest/userguide/getting-started-eksctl.html)**（1.24 或更高版本）：Amazon EKS 1.24 及更高版本支持垂直自动扩缩功能。创建集群后，请[注册集群用于 Amazon EMR](setting-up-registration.md)。
+ **[选择 Amazon EMR 基础映像 URI](docker-custom-images-tag.md)（6.10.0 或更高版本）：**Amazon EMR 6.10.0 及更高版本都支持垂直自动扩展功能。

## 在 Amazon EKS 集群上安装 Operator Lifecycle Manager（OLM）
<a name="jobruns-vas-install-olm"></a>

使用 Operator SDK CLI 在要设置垂直自动扩展功能的 Amazon EMR on EKS 集群上安装 Operator Lifecycle Manager（OLM），示例如下。设置完成后，您可以使用 OLM 来安装并管理 [Amazon EMR 垂直自动扩展 Operator](#jobruns-vas-install-operator) 的生命周期。

```
operator-sdk olm install
```

要验证安装情况，请运行 `olm status` 命令：

```
operator-sdk olm status
```

如果安装成功，验证命令返回类似如下示例输出的结果：

```
INFO[0007] Successfully got OLM status for version X.XX
```

如果安装失败，请参阅 [对 Amazon EMR on EKS 垂直自动扩展进行问题排查](troubleshooting-vas.md)。

## 安装 Amazon EMR on EKS 垂直自动扩展 Operator
<a name="jobruns-vas-install-operator"></a>

按照以下步骤在 Amazon EKS 集群上安装垂直自动扩展 Operator：

1. 设置以下要用来完成安装的环境变量：
   + **`$REGION`** 指向集群的 Amazon Web Services 区域 。例如 `us-west-2`。
   + **`$ACCOUNT_ID`** 指向所在地区的 Amazon ECR 账户 ID。有关更多信息，请参阅 [按区域划分的 Amazon ECR 注册账户](docker-custom-images-tag.md#docker-custom-images-ECR)。
   + **`$RELEASE`** 指向要用于集群的 Amazon EMR 版本。使用垂直自动扩展功能时，必须使用 Amazon EMR 6.10.0 或更高版本。

1. 接下来，为 Operator 获取 [Amazon ECR 注册表](docker-custom-images-tag.md#docker-custom-images-ECR)的身份验证令牌。

   ```
   aws ecr get-login-password \
    --region region-id | docker login \
    --username AWS \
    --password-stdin $ACCOUNT_ID.dkr.ecr.region-id.amazonaws.com
   ```

1. 使用以下命令在 Amazon EMR on EKS 上安装垂直自动扩展 Operator：

   ```
   ECR_URL=$ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com && \
   REPO_DEST=dynamic-sizing-k8s-operator-olm-bundle && \
   BUNDLE_IMG=emr-$RELEASE-dynamic-sizing-k8s-operator && \
   operator-sdk run bundle \
   $ECR_URL/$REPO_DEST/$BUNDLE_IMG\:latest
   ```

   这会在 Amazon EKS 集群的默认命名空间中创建发行版垂直自动扩展 Operator。使用此命令在不同命名空间中安装：

   ```
   operator-sdk run bundle \
   $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/dynamic-sizing-k8s-operator-olm-bundle/emr-$RELEASE-dynamic-sizing-k8s-operator:latest \
   -n operator-namespace
   ```
**注意**  
如果您指定的命名空间不存在，OLM 不会安装该 Operator。有关更多信息，请参阅 [未找到 Kubernetes 命名空间](troubleshooting-vas.md)。

1. 使用 kubectl Kubernetes 命令行工具验证是否成功安装了 Operator。

   ```
   kubectl get csv -n operator-namespace
   ```

   `kubectl` 命令应返回新部署的垂直 Autoscaler Operator，且**阶段**状态为**成功**。如在安装或设置时遇到问题，请参阅 [对 Amazon EMR on EKS 垂直自动扩展进行问题排查](troubleshooting-vas.md)。