

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 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 垂直自動擴展運算子](#jobruns-vas-install-operator)

## 先決條件
<a name="jobruns-vas-prereqs"></a>

在叢集上安裝可垂直自動擴展的 Kubernetes Operator 之前，請先完成下列任務。如果已經完成任何先決條件，則可以跳過這些先決條件，然後繼續進行下一個。
+ **[安裝或更新至最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)**- 如果您已安裝 AWS CLI，請確認您擁有最新版本。
+ **[安裝 kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)** – kubectl 是一種命令列工具，可用來與 Kubernetes API 伺服器進行通訊。您需要 kubectl 才能在 Amazon EKS 叢集上安裝和監控垂直自動擴展相關成品。
+ **[安裝 Operator SDK](https://sdk.operatorframework.io/docs/installation/)** – Amazon EMR on EKS 使用 Operator SDK 作為您在叢集上安裝的垂直自動擴展運算子使用壽命的套件管理工具。
+ **[安裝 Docker](https://docs.docker.com/get-docker/)** – 您需要存取 Docker CLI 來驗證和擷取要安裝在 Amazon EKS 叢集上的垂直自動擴展相關 Docker 映像檔。
+ **[安裝 Kubernetes 指標伺服器](https://docs.aws.amazon.com/eks/latest/userguide/metrics-server.html)** – 您必須先安裝指標伺服器，垂直 Pod 自動擴展器才能從 Kubernetes API 伺服器擷取指標。
+ **[開始使用 Amazon EKS – eksctl](https://docs.aws.amazon.com/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 垂直自動擴展運算子的生命週期](#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 垂直自動擴展運算子
<a name="jobruns-vas-install-operator"></a>

使用下列步驟在 Amazon EKS 叢集上安裝垂直自動擴展運算子：

1. 設定下列將用於完成安裝的環境變數：
   + **`$REGION`** 指向叢集的 AWS 區域 。例如 `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. 接下來，取得運算子的 [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 垂直自動擴展運算子：

   ```
   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-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 將不會安裝運算子。如需詳細資訊，請參閱[找不到 Kubernetes 命名空間](troubleshooting-vas.md)。

1. 確認已使用 kubectl Kubernetes 命令列工具成功安裝 Operator。

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

   `kubectl` 命令應傳回新部署的垂直自動擴展器 Operator，其**階段**狀態為**已成功**。如果遇到安裝或設定問題，請參閱 [對 Amazon EMR on EKS 垂直自動擴展進行疑難排解](troubleshooting-vas.md)。