搜索

3.2. 自动化控制器 pod 容器的大小建议

download PDF

从概述部分查看 图 1.1 “自动化控制器架构”,您会注意到 control pod 包含 4 个容器:

  • web
  • ee
  • redis
  • task

这些容器在 Ansible 自动化控制器中执行一个唯一功能,了解资源配置如何影响控制 pod 至关重要。默认情况下,Red Hat OpenShift 提供了适用于最小测试安装的低值,但不建议在生产环境中运行 Ansible Automation Platform。

Ansible Automation Platform 的 Red Hat OpenShift 默认值是:

  • cpu: 100m
  • 内存:128Mi

默认情况下,Red Hat OpenShift 不会配置任何最大资源限值,并将尝试分配 Ansible Automation Platform 控制 pod 请求的所有可能资源。此配置可能会导致资源不足,并影响在 Red Hat OpenShift 集群上运行的其他应用程序。

要演示控制 Pod 中容器的资源请求和限值的起点,我将使用以下假设:

  • 3 个 worker 节点在 Red Hat OpenShift 集群中可用,每个都有 4 个 vCPU 和 16GiB RAM
  • 为自动化作业最大化资源比高可用性更重要
  • 用于运行自动化控制器的专用 worker 节点
  • 剩余的两个 worker 节点用于运行自动化作业

在调整控制 pod 中的容器大小时,务必要考虑具体工作负载。虽然我进行了性能测试,它们为这个参考环境提供特定建议,但这些建议可能不适用于所有类型的工作负载。

作为起点,我决定利用 性能集合 playbook,特别是 chatty_tasks.yml

性能基准包括:

  • 使用 1 个主机创建清单
  • 创建运行 chatty_tasks.yml 文件的作业模板

chatty_tasks 作业模板使用 ansible.builtin.debug 模块来生成每个主机的一组调试消息,并生成必要的清单。通过使用 ansible.builtin.debug 模块,我可以在不引入任何其他开销的情况下获得自动化控制器性能的准确表示。

作业模板使用指定的并发级别执行,范围从 10 到 50,表示作业模板的同时调用数量。

以下 资源请求和资源限制 是性能基准的结果,可用作使用类似资源的 Red Hat OpenShift 集群运行 AAP 的起始基准。

spec:
...
  ee_resource_requirements:
    limits:
      cpu: 500m
      memory: 400Mi
    requests:
      cpu: 100m
      memory: 400Mi
  task_resource_requirements:
    limits:
      cpu: 4000m
      memory: 8Gi
    requests:
      cpu: 1000m
      memory: 8Gi
  web_resource_requirements:
    limits:
      cpu: 2000m
      memory: 1.5Gi
    requests:
      cpu: 500m
      memory: 1.5Gi
  redis_resource_requirements:
    limits:
      cpu: 500m
      memory: 1.5Gi
    requests:
      cpu: 250m
      memory: 1.5Gi
注意

内存资源请求和限值匹配以防止在 Red Hat OpenShift 集群中利用内存资源,这可能会导致 Pod 的 Out Of Memory (OOM) Kill。如果资源限值大于资源请求,可能会导致一个场景,允许过度使用 Red Hat OpenShift 节点。

注意

CPU 资源请求和限值与内存不同,因为 CPU 资源被视为可压缩。这意味着,Red Hat OpenShift 会在达到资源限值时尝试节流容器的 CPU,但不会终止容器。在以上控制 pod 中的容器中,提供了 CPU 请求,这些请求对于给定的工作负载有足够的 CPU,但允许将其阈值(CPU 限值)设置为更高的值,允许在负载下激增。

警告

上面的场景假设,没有其他应用程序在 control pod 所在的 worker 节点上使用资源,因为它使用了专用的 Red Hat OpenShift worker 节点。更多详情请参阅 第 3.7 节 “为自动化控制器 pod 指定专用节点”

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.