3.4. 自动化作业 pod 的大小建议


Ansible Automation Platform 作业是针对主机清单启动 Ansible playbook 的自动化控制器实例。当 Ansible Automation Platform 在 Red Hat OpenShift 上运行时,默认执行队列是 Operator 在安装时创建的容器组。

容器组由 Kubernetes 凭证和默认 Pod 规格组成。当作业启动到容器组时,由容器组 pod 规格指定的命名空间中的自动化控制器创建 pod。这些 pod 被称为自动化作业 pod。

要确定用于自动化作业 pod 的大小,必须首先了解自动化控制器 control plane 可同时启动的作业数量。

在本例中,有 3 个 worker 节点(每个 4 个 vCPU 和 16GiB RAM)。一个 worker 节点托管 control pod,另一个两个 worker 节点用于自动化作业。

根据这些值,我们可以确定自动化控制器 control plane 可以运行的控制容量。

以下公式提供分类:

control capacity = Total Memory in MB / Fork size in MB

基于 worker 节点,这可表达为:

总控制容量 = 16,000 MB / 100 MB = 160

注意

对于对计算的更多详细信息感兴趣的证书,请查看资源确定容量算法

这意味着自动化控制器被配置为同时启动 160 个作业。但是,需要对这个值进行调整才能与我们的容器组/execution plane 容量相匹配。

注意

为简单起见,16GB 被舍入为 16,000 MB,一个分叉的大小默认为 100MB。

现在,我们计算了可用的控制容量,我们就可以确定并发自动化作业的最大数量。

要确定这一点,我们必须注意,容器组/execution plane 中的自动化作业 pod 规格具有 vCPU 250m 和 100Mi RAM 的默认请求。

使用一个 worker 节点的总内存:

16,000 MB / 100 MiB = 160 个并发作业

使用一个 worker 节点的总 CPU:

4000 millicpu / 250 millicpu = 16 个并发作业

根据以上值,我们必须将节点上的最大并发作业设置为两个并发作业值的最小 - 16。因为有两个 worker 节点分配给在我们的示例中运行自动化作业,这个数字会加倍到 32 (每个 worker 节点有 16 个并发作业)。

自动化控制器的配置目前设置为 160 个并发作业,可用的 worker 节点容量只允许 32 个并发作业。这是一个问题,因为数字没有平衡。

这意味着自动化控制器的 control plane 认为它可以同时启动 160 个作业,而 Kubernetes 调度程序只会在 Container Group 命名空间中同时调度最多 32 个自动化作业 pod。

control plane 和容器组/execution plane 之间的未平衡值可能会导致问题:

  • 如果 control plane 容量高于 Container Group 的最大并发作业 pod 数量,则 control plane 将尝试通过提交 pod 启动来启动作业。但是,这些 pod 不会实际开始运行,直到资源可用为止。如果作业 pod 在 AWX_CONTAINER_GROUP_POD_PENDING_TIMEOUT 的超时时间内启动,则该作业将中止(默认为 2 小时)。
  • 如果容器组能够支持比 control plane 可以启动更多的并发自动化作业,则此容量将实际发生,因为自动化控制器将无法启动足够的自动化作业,以便访问容器组可以支持的最大并发自动化作业。

为了避免中止的作业或未使用资源的风险,建议把有效的控制容量与默认容器组支持的最大并发作业数量相平衡。

使用术语"有效控制容量",因为 control plane 将启动的最大作业数量受名为 AWX_CONTROL_NODE_TASK_IMPACT 的设置的影响。AWX_CONTROL_NODE_TASK_IMPACT 变量定义了每个自动化作业可在控制 pod 上消耗的容量量,从而有效地控制控制 pod 将启动的自动化作业数量。

要在有效控制容量和可用执行容量之间实现平衡,我们可以将 AWX_CONTROL_NODE_TASK_IMPACT 变量设为限制要在自动化控制器 control plane 上运行的并发作业数量的值。

要计算 AWX_CONTROL_NODE_TASK_IMPACT 的最佳值,以避免启动比容器组支持的更并发自动化作业,我们可使用以下公式:

AWX_CONTROL_NODE_TASK_IMPACT = 控制容量/容器组可以启动的最大并发作业

对于我们的参考环境,这是:

AWX_CONTROL_NODE_TASK_IMPACT = 160 / 32 = 5

本参考环境的此结束,XX _CONTROL_NODE_TASK_IMPACT 应该等于 5。此值将在 第 6 章 安装自动化控制器 章节的 extra_setting 部分中设置,我们将在本文档的后面部分介绍。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.