Amazon EKS 资源扩展执行块 - Amazon 应用程序恢复控制器(ARC)

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

Amazon EKS 资源扩展执行块

EKS 资源扩展执行块使您能够在多区域恢复过程中扩展 EKS 资源。配置执行块时,您可以定义要扩展的容量相对于要停用的区域中容量的百分比。

配置 EKS 访问入口权限

在为 EKS 资源扩展添加执行块之前,您必须为区域切换提供必要的权限,以便对 EKS 集群中的 Kubernetes 资源执行操作。要为区域切换提供访问权限,您必须使用以下区域切换访问策略为区域切换用于执行计划的 IAM 角色创建 EKS 访问入口:arn:aws:eks::aws:cluster-access-policy/AmazonARCRegionSwitchScalingPolicy

区域切换 EKS 访问策略

以下是有关 EKS 访问策略的详细信息。

名称AmazonARCRegionSwitchScalingPolicy

策略 ARN:arn:aws:eks::aws:cluster-access-policy/AmazonARCRegionSwitchScalingPolicy

Kubernetes API 组 Kubernetes 资源 Kubernetes 动词(权限)

*

*/scale

get、update

*

*/status

自动扩缩

horizontalpodautoscalers

get、patch

为区域切换创建 EKS 访问入口

以下示例描述如何创建所需的访问入口和访问策略关联,以便区域切换可以对您的 Kubernetes 资源采取特定操作。在此示例中,权限适用于 EKS 集群my-namespace1中 IAM 角色my-cluster的命名空间arn:aws:iam::555555555555:role/my-role

配置这些权限时,请确保在执行块中对两个 EKS 集群执行这些步骤。

先决条件

在开始之前,请将集群的身份验证模式更改为 API_AND_CONFIG_MAPAPI。更改授权模式会为访问条目添加 API。有关更多信息,请参阅《Amazon EKS 用户指南》中的更改身份验证模式以使用访问条目

创建访问条目

第一步是使用类似于以下内容的 AWS CLI 命令来创建访问条目:

aws eks create-access-entry --cluster-name my-cluster --principal-arn arn:aws:iam::555555555555:user/my-user --type STANDARD

有关更多信息,请参阅《Amazon EKS 用户指南》中的创建访问条目

创建访问条目关联

接下来,使用类似于以下内容的 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 用户指南》中的将访问策略与访问条目关联起来

请务必在另一个区域的执行区块中对第二个 EKS 集群重复这些步骤,确保两个集群都可以通过区域切换进行访问。

配置

重要

在添加 EKS 资源扩展执行块之前,请确保权限配置正确。有关更多信息,请参阅 配置 EKS 访问入口权限。此外,请确保您具有正确的 IAM 策略。有关更多信息,请参阅 Amazon EKS 资源扩展执行块示例策略

请注意,区域切换目前支持以下 ReplicaSet 资源:apps/v1, Deployment, and apps/v1.

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

  1. 步骤名称:输入名称。

  2. 步骤描述(可选):输入步骤的描述。

  3. 应用程序名称:输入您的 EKS 应用程序的名称,例如 myApplication

  4. Kubernetes 资源类型:输入应用程序的资源类型,例如 Deployment

  5. 区域资源:对于每个区域,输入 EKS 集群的信息,包括 EKS 集群 ARN、资源命名空间等。

  6. 与已激活区域容量相匹配的百分比:输入来源区域中所需的运行容器组(POD)数量百分比,以匹配激活区域。

  7. 容量监控方法:已选择容量监控的唯一选项,即在 24 小时内采样的最大运行容量

    这种容量监控方法使用 EKS 服务请求的 ReplicaCount 值。有关更多信息,请参阅《Amazon Elastic Kubernetes Service 用户指南》中的了解 Amazon EKS 中的 ARC 可用区转移

  8. 超时:输入超时值。

然后,选择保存步骤

工作原理

在计划执行期间,区域切换会检索您正在激活的区域中目标资源在过去 24 小时内采样的最大副本数。然后,它使用以下公式计算目标资源所需的副本数:ceil(percentToMatch * Source replica count)

如果目标就绪副本数量低于所需值,则区域切换会将目标资源副本值扩展到所需的容量。它会等待副本准备就绪,必要时利用您的节点自动缩放程序来增加节点容量。

如果可选hpaName字段不为空,Region switch 将使用以下修补程序修补HorizontalPodAutoscaler 以防止在执行期间或执行后自动缩小规模:{"spec":{"behavior":{"scaleDown":{"selectPolicy":"Disabled"}}}}

确保将任何漂移校正工具(例如 GitOps 工具)配置为忽略补丁中资源的副本字段以及该字段。 HorizontalPodAutoscaler

作为计划评估一部分的评估内容

当区域切换评估您的计划时,会对您配置的 EKS 执行块和权限执行多项检查。区域切换可验证计划的 IAM 角色是否具有描述 EKS 集群和列出相关访问条目策略的正确权限。区域切换还会验证 IAM 角色是否与正确的访问条目策略相关联,从而让区域切换具有所需的权限来对 Kubernetes 资源执行操作。最后,区域切换确认已配置的 EKS 集群和 Kubernetes 资源是否存在。

此外,区域切换会检查其是否已成功收集和存储必要的监控数据(Kubernetes 副本数量),并捕获执行区域切换计划所需的运行容器组(pod)数量。