

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

# Amazon EKS 資源擴展執行區塊
<a name="eks-resource-scaling-block"></a>

EKS 資源擴展執行區塊可讓您在多區域復原程序中擴展 EKS 資源。當您設定執行區塊時，您可以定義要擴展的容量百分比，相對於要停用區域中的容量。

## 設定 EKS 存取項目許可
<a name="eks-resource-scaling-block-permissions"></a>

在新增 EKS 資源擴展的步驟之前，您必須向區域交換器提供必要的許可，以對 EKS 叢集中的 Kubernetes 資源採取動作。若要提供區域切換的存取權，您必須使用下列區域切換存取政策，為區域切換用於計劃執行的 IAM 角色建立 EKS 存取項目： `arn:aws:eks::aws:cluster-access-policy/AmazonARCRegionSwitchScalingPolicy`

### 區域切換 EKS 存取政策
<a name="eks-resource-scaling-block-permissions.policy"></a>

以下資訊提供有關 EKS 存取政策的詳細資訊。

**名稱:** `AmazonARCRegionSwitchScalingPolicy`

**政策 ARN：** `arn:aws:eks::aws:cluster-access-policy/AmazonARCRegionSwitchScalingPolicy`


| Kubernetes API 群組 | Kubernetes 資源 | Kubernetes 動詞 (許可) | 
| --- | --- | --- | 
| \$1 | \$1/scale | get、更新 | 
| \$1 | \$1/狀態 | get | 
| 自動擴展 | horizontalpodautoscaler | get、修補 | 

### 建立區域切換的 EKS 存取項目
<a name="eks-resource-scaling-block-permissions.create"></a>

下列範例說明如何建立所需的存取項目和存取政策關聯，讓區域切換可以為您的 Kubernetes 資源採取特定動作。在此範例中，許可適用於 IAM 角色 的 EKS 叢集 my-*cluster 中的命名空間* *my-namespace1*`arn:aws:iam::555555555555:role/my-role`。

當您設定這些許可時，請務必針對執行區塊中的兩個 EKS 叢集採取這些步驟。

**先決條件**  
開始之前，請將叢集的身分驗證模式變更為 `API_AND_CONFIG_MAP`或 `API`。變更授權模式會新增存取項目的 API。如需詳細資訊，請參閱《Amazon EKS 使用者指南》中的[變更身分驗證模式以使用存取項目](https://docs.aws.amazon.com/eks/latest/userguide/setting-up-access-entries.html)。

**建立存取項目**  
第一步是使用類似下列的 AWS CLI 命令來建立存取項目：  

```
aws eks create-access-entry --cluster-name my-cluster --principal-arn
									arn:aws:iam::555555555555:user/my-user --type STANDARD
```
如需詳細資訊，請參閱《Amazon EKS 使用者指南》中的[建立存取項目](https://docs.aws.amazon.com/eks/latest/userguide/creating-access-entries.html)。

**建立存取項目關聯**  
接著，使用類似以下的 AWS CLI 命令建立與區域切換存取政策的關聯：  

```
aws eks associate-access-policy --cluster-name my-cluster --principal-arn arn:aws:iam::555555555555:role/my-role \
										--access-scope type=namespace,namespaces=my-namespace1 --policy-arn
										arn:aws:eks::aws:cluster-access-policy/AmazonARCRegionSwitchScalingPolicy
```
如需詳細資訊，請參閱《Amazon EKS 使用者指南》中的[將存取政策與存取項目建立關聯](https://docs.aws.amazon.com/eks/latest/userguide/access-policies.html)。

請務必在另一個區域的執行區塊中對第二個 EKS 叢集重複這些步驟，以確保兩個叢集都可以由區域切換存取。

## Configuration
<a name="eks-resource-scaling-block-config"></a>

**重要**  
在新增 EKS 資源擴展步驟之前，請先確定您已設定正確的許可。如需詳細資訊，請參閱[設定 EKS 存取項目許可](#eks-resource-scaling-block-permissions)。此外，請確定您已備妥正確的 IAM 政策。如需詳細資訊，請參閱[Amazon EKS 資源擴展執行區塊範例政策](security_iam_region_switch_eks.md)。

請注意，區域切換目前支援下列 ReplicaSet 資源：app/v1、Deplation 和 app/v1。

針對執行區塊組態，輸入下列值。

1. **步驟名稱：**輸入名稱。

1. **步驟描述 （選用）：**輸入步驟的描述。

1. **應用程式名稱：**輸入 EKS 應用程式的名稱，例如 *myApplication*。

1. **Kubernetes 資源類型：**輸入應用程式的資源類型，例如*部署*。

1. ***區域*資源：**針對每個區域，輸入 EKS 叢集的資訊，包括 EKS 叢集 ARN、資源命名空間等。

1. **符合啟用區域容量的百分比：**輸入在來源區域中執行 Pod 在啟用區域中符合的所需百分比。

1. **容量監控方法：**已選取容量監控的唯一選項，**在 24 小時內取樣的最大執行容量**。

   此容量監控方法使用 EKS 服務請求`ReplicaCount`的值。如需詳細資訊，請參閱《[Amazon Elastic Kubernetes Service 使用者指南》中的了解 Amazon EKS 中的 ARC 區域轉移](https://docs.aws.amazon.com/eks/latest/userguide/zone-shift.html)。

1. **逾時：**輸入逾時值。

然後，選擇**儲存步驟。**

## 運作方式
<a name="eks-resource-scaling-block-how"></a>

在計劃執行期間，區域切換會擷取您啟動之區域中目標資源過去 24 小時內取樣的複本數量上限。然後，它會使用以下公式計算目的地資源所需的複本計數： `ceil(percentToMatch * Source replica count)`

如果目的地就緒複本計數低於所需的值，區域開關會將目的地資源複本值擴展為所需的容量。它會等待複本準備就緒，並在必要時利用您的節點自動擴展器來增加節點容量。

如果選用`hpaName`欄位不是空的，區域切換會使用下列修補程式來修補 HorizontalPodAutoscaler，以防止執行期間或之後的任何自動縮減規模： `{"spec":{"behavior":{"scaleDown":{"selectPolicy":"Disabled"}}}}`

請務必設定任何偏離校正工具，例如 GitOps 工具，以忽略修補程式中資源的複本欄位，以及 HorizontalPodAutoscaler 欄位。

## 作為計畫評估的一部分而評估的內容
<a name="eks-resource-scaling-block-eval"></a>

當區域切換評估您的計劃時，區域切換會對設定的 EKS 執行區塊和許可執行數項檢查。區域切換會驗證計劃的 IAM 角色是否具有描述 EKS 叢集和列出相關存取項目政策的正確許可。區域切換也會驗證 IAM 角色是否與正確的存取項目政策相關聯，以便區域切換具有對 Kubernetes 資源採取行動所需的許可。最後，區域切換會確認設定的 EKS 叢集和 Kubernetes 資源是否存在。

此外，區域切換會檢查其是否已成功收集並存放必要的監控資料 (Kubernetes 複本計數），並擷取執行區域切換計畫所需的執行中 Pod 數量。