4.5. 为基于 Operator 的代理部署配置资源限值和请求


创建基于 Operator 的代理部署时,部署中的代理 Pod 在 OpenShift 集群中的节点中运行。您可以为部署配置自定义资源(CR)实例,以指定每个 Pod 中运行的代理容器使用的 host-node 计算资源。通过为 CPU 和内存(RAM)指定限制和请求值,您可以确保代理 Pod 的性能不满意。

重要
  • 您必须先为代理部署的 CR 实例添加限制和请求的配置,然后再 第一次部署 CR。您无法将 配置添加到已在运行的代理部署中。
  • 红帽无法为限制和请求推荐值,因为这些值取决于您的具体消息传递系统用例以及您实施的结果架构。但是,建议您在 为生产环境配置前测试和调整开发环境中的这些值。
  • 在初始化每个代理 Pod 时,Operator 会创建一个名为 Init 容器的容器。每个代理容器配置的任何资源限值和请求也适用于每个初始容器。有关在代理部署中使用初始容器的更多信息,请参阅 第 4.1 节 “Operator 如何生成代理配置”

您可以指定以下限制和请求值:

CPU 限制
对于 Pod 中运行的每个代理容器,这个值是容器可以消耗的 host-node CPU 的最大数量。如果代理容器尝试超过指定的 CPU 限制,OpenShift 会节流容器。这样可确保容器具有一致的性能,无论节点上运行的 Pod 数量是什么。
内存限制
对于 Pod 中运行的每个代理容器,这个值是容器可以使用的最大主机节点内存量。如果代理容器尝试超过指定的内存限值,OpenShift 会终止容器。代理 Pod 重启。
CPU 请求

对于 Pod 中运行的每个代理容器,这个值是容器请求的 host-node CPU 量。OpenShift 调度程序在 Pod 放置过程中考虑 CPU 请求值,以将代理 Pod 绑定到具有足够计算资源的节点。

CPU 请求值是代理容器运行 的最小 CPU 量。但是,如果节点上没有 CPU 争用,容器可以使用所有可用的 CPU。如果指定了 CPU 限制,则容器不能超过该 CPU 用量。如果节点上有 CPU 争用,则 CPU 请求值提供了一种方法来让 OpenShift 消耗所有容器的 CPU 用量。

内存请求

对于 Pod 中运行的每个代理容器,这个值是容器请求的 host-node 内存量。OpenShift 调度程序在 Pod 放置过程中会考虑内存请求值,将代理 Pod 绑定到具有足够计算资源的节点。

内存请求值是代理容器运行 的最小内存量。但是,容器可以尽可能消耗可用内存。如果指定了内存限制,则代理容器不能超过该内存用量。

CPU 以名为 millicores 的单位来衡量。OpenShift 集群中的每个节点检查操作系统,以确定节点上的 CPU 内核数。然后,节点将该值乘以 1000 以表示总容量。例如,如果节点有两个内核,则节点的 CPU 容量显示为 2000m。因此,如果您使用一个核心的单位,则指定一个值 100m

内存单位为字节。您可以使用字节表示法(E、P、T、G、M、K)或二进制等同值(Ei、Pi、Ti、Gi、Mi、Ki)。您指定的值必须包含一个单元。

4.5.1. 配置代理资源限制和请求

以下示例演示了如何为代理部署配置主自定义资源(CR)实例,以便为部署中的 Pod 中运行的每个代理容器设置 CPU 和内存的限值和请求。

重要
  • 您必须先为代理部署的 CR 实例添加限制和请求的配置,然后再 第一次部署 CR。您无法将 配置添加到已在运行的代理部署中。
  • 红帽无法为限制和请求推荐值,因为这些值取决于您的具体消息传递系统用例以及您实施的结果架构。但是,建议您在 为生产环境配置前测试和调整开发环境中的这些值。

先决条件

流程

  1. 开始为代理部署配置自定义资源(CR)实例。

    1. 使用 OpenShift 命令行界面:

      1. 以有权在用于创建部署的项目中部署 CR 的用户身份登录 OpenShift。

        oc login -u <user> -p <password> --server=<host:port>
        Copy to Clipboard Toggle word wrap
      2. 打开名为 broker_activemqartemis_cr.yaml 的示例 CR 文件,该文件包含在您下载和提取的 Operator 安装存档的 deploy/crs 目录中。
    2. 使用 OpenShift Container Platform Web 控制台:

      1. 以有权在用于创建部署的项目中部署 CR 的用户登录到控制台。
      2. 根据主代理 CRD 启动一个新的 CR 实例。在左侧窗格中,单击 Administration Custom Resource Definitions
      3. 单击 ActiveMQArtemis CRD。
      4. 实例 选项卡。
      5. 单击 Create ActiveMQArtemis

        在控制台中,会打开 YAML 编辑器,供您配置 CR 实例。

    对于基本的代理部署,配置可能类似以下示例。

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
      deploymentPlan:
        size: 1
        image: placeholder
        requireLogin: false
        persistenceEnabled: true
        journalType: nio
        messageMigration: true
    Copy to Clipboard Toggle word wrap

    观察到 broker_activemqartemis_cr.yaml 示例 CR 文件中,image 属性设为 占位符 默认值。此值表示默认情况下,image 属性不指定用于部署的代理容器镜像。要了解 Operator 如何确定要使用的适当代理容器镜像,请参阅 第 2.4 节 “Operator 如何选择容器镜像”

  2. 在 CR 的 deploymentPlan 部分中,添加一个 resources 部分。添加 limitsrequests 子项。在每个子部分中,添加一个 cpumemory 属性并指定值。例如:

    spec:
      deploymentPlan:
        size: 1
        image: placeholder
        requireLogin: false
        persistenceEnabled: true
        journalType: nio
        messageMigration: true
        resources:
          limits:
            cpu: "500m"
            memory: "1024M"
          requests:
            cpu: "250m"
            memory: "512M"
    Copy to Clipboard Toggle word wrap
    limits.cpu
    在部署 Pod 中运行的每个代理容器都不能超过此数量 host-node CPU 用量。
    limits.memory
    在部署 Pod 中运行的每个代理容器都不能超过此数量的主机节点内存用量。
    requests.cpu
    在部署 Pod 中运行的每个代理容器都会请求这个数量 host-node CPU。这个值是代理容器运行 所需的最小 CPU 量。
    requests.memory
    在部署 Pod 中运行的每个代理容器都会请求这个数量的主机节点内存。这个值是代理容器运行所需的 最小内存量
  3. 部署 CR 实例。

    1. 使用 OpenShift 命令行界面:

      1. 保存 CR 文件。
      2. 切换到您要在其中创建代理部署的项目。

        $ oc project <project_name>
        Copy to Clipboard Toggle word wrap
      3. 创建 CR 实例。

        $ oc create -f <path/to/custom_resource_instance>.yaml
        Copy to Clipboard Toggle word wrap
    2. 使用 OpenShift Web 控制台:

      1. 配置完 CR 后,点 Create
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat