

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

# 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、update | 
| \$1 | \$1/status | 入 | 
| 自动扩缩 | horizontalpodautoscalers | get、patch | 

### 为区域切换创建 EKS 访问条目
<a name="eks-resource-scaling-block-permissions.create"></a>

以下示例描述如何创建所需的访问条目和访问策略关联，以便区域切换可以对您的 Kubernetes 资源执行特定操作。在此示例中，权限适用于 EKS 集群*my-namespace1*中 IAM 角色*my-cluster*的命名空间`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 集群重复这些步骤，确保这两个集群都可以通过区域切换进行访问。

## 配置
<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 资源：apps/v1, Deployment, and apps/v1.

对于执行块配置，输入以下值。

1. **步骤名称：**输入名称。

1. **步骤描述（可选）：**输入步骤的描述。

1. **应用程序名称：**输入您的 EKS 应用程序的名称，例如 *myApplication*。

1. **Kubernetes 资源种类：**输入应用程序的资源种类，例如 *Deployment*。

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`字段不为空，Region switch 将使用以下修补程序修补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）数量。