4.4. 为基于 Operator 的代理部署配置资源限值和请求
当您创建基于 Operator 的代理部署时,部署中的代理 Pod 在 OpenShift 集群的节点上在 StatefulSet 中运行。您可以为部署配置自定义资源(CR)实例,以指定每个 Pod 中运行的代理容器使用的 host-node 计算资源。通过指定 CPU 和内存(RAM)的限值和请求值,您可以确保代理 Pod 的性能满意。
- 要在基于 Operator 的部署中为代理配置资源限值和请求,必须至少 将 Operator 的最新版本用于 AMQ Broker 7.7(即 0.17 版本)。要了解如何将 Operator 升级到 AMQ Broker 7.8 的最新版本,请参阅 第 6 章 升级基于 Operator 的代理部署。
- 在首次部署 CR 前,您必须为代理部署的 CR 实例添加限制和请求的配置。您不能将 配置添加到已在运行的代理部署中。
- 红帽无法推荐限制和请求的值,因为它们基于您的特定消息传递系统用例和您所实施的结果构架。但是 , 建议您在开发环境中测试并调整这些值,然后再为生产环境进行配置。
- 在初始化每个代理 Pod 时,Operator 运行一组称为初始容器的容器。您为每个代理容器配置的任何资源限值和请求都适用于每个初始容器。有关在代理部署中使用初始容器的更多信息,请参阅 第 4.1 节 “Operator 如何生成代理配置”。
您可以指定以下限制和请求值:
CPU 限制
- 对于在 Pod 中运行的每个代理容器,这个值是容器可以消耗的最大主机 CPU 数量。如果代理容器尝试超过指定的 CPU 限制,OpenShift 会节流容器。这样可确保容器具有一致的性能,无论节点上运行的 Pod 数量是什么。
内存限制
- 对于在 Pod 中运行的每个代理容器,这个值是容器可以消耗的最大主机内存量。如果代理容器尝试超过指定的内存限制,OpenShift 会终止该容器。代理 Pod 重启。
CPU 请求
对于在 Pod 中运行的每个代理容器,这个值是容器请求的主机 CPU 数量。OpenShift 调度程序在 Pod 放置过程中考虑 CPU 请求值,将代理 Pod 绑定到具有足够计算资源的节点。
CPU 请求值是代理容器运行 所需的最小 CPU 量。但是,如果节点上没有 CPU 竞争,容器可以使用所有可用的 CPU。如果您指定了一个 CPU 限制,则容器不能超过该 CPU 用量。如果节点上存在 CPU 争用,则 CPU 请求值可提供一个方式 OpenShift 来衡量所有容器上的 CPU 使用量。
内存请求
对于在 Pod 中运行的每个代理容器,这个值是容器请求的主机内存量。OpenShift 调度程序在 Pod 放置过程中考虑内存请求值,将代理 Pod 绑定到具有足够计算资源的节点。
内存请求值是代理容器运行所需的 最小内存量。但是,容器可以尽可能消耗可用内存。如果您指定了内存限制,则代理容器不能超过内存用量。
CPU 以名为 millicores 的单位来衡量。OpenShift 集群中的每一节点检查操作系统,以确定节点上的 CPU 内核数。然后,节点将该值乘以 1000 以表示总容量。例如,如果某个节点有两个内核,则节点的 CPU 容量以 2000m
表示。因此,如果要使用单个内核的一次性,请指定 100m
值。
内存以字节为单位。您可以使用字节表示法(E、P、T、G、M、K)或二进制等同指定值(i, Pi, Ti, Gi, Mi, Ki)。您指定的值必须包含一个单元。
4.4.1. 配置代理资源限制和请求 复制链接链接已复制到粘贴板!
以下示例演示了如何为代理部署配置主自定义资源(CR)实例,为部署中运行的 Pod 中每个代理容器设置 CPU 和内存的限值和请求。
- 在首次部署 CR 前,您必须为代理部署的 CR 实例添加限制和请求的配置。您不能将 配置添加到已在运行的代理部署中。
- 红帽无法推荐限制和请求的值,因为它们基于您的特定消息传递系统用例和您所实施的结果构架。但是 , 建议您在开发环境中测试并调整这些值,然后再为生产环境进行配置。
先决条件
- 您必须至少对 AMQ Broker 7.7 使用最新版本的 Operator(即 0.17 版本)。要了解如何将 Operator 升级到 AMQ Broker 7.8 的最新版本,请参阅 第 6 章 升级基于 Operator 的代理部署。
- 您应该熟悉如何使用 CR 实例创建基本代理部署。请参阅 第 3.4.1 节 “部署基本代理实例”。
步骤
开始为代理部署配置自定义资源(CR)实例。
使用 OpenShift 命令行界面:
以具有部署部署权限的项目中部署 CR 的用户身份登录 OpenShift。
oc login -u <user> -p <password> --server=<host:port>
oc login -u <user> -p <password> --server=<host:port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开名为
broker_activemqartemis_cr.yaml
的示例 CR 文件,该文件包括在您下载并提取的 Operator 安装的deploy/crs
目录中。
使用 OpenShift Container Platform Web 控制台:
- 以具有部署部署 CR 的项目中部署 CR 权限的用户身份登录控制台。
-
根据主代理 CRD 启动一个新的 CR 实例。在左侧窗格中,单击
。 - 单击 ActiveMQArtemis CRD。
- 点 实例 选项卡。
单击 Create ActiveMQArtemis。
在控制台中,会打开 YAML 编辑器,供您配置 CR 实例。
对于基本代理部署,配置可能类似以下配置。此配置是
broker_activemqartemis_cr.yaml
示例 CR 文件的默认内容。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 观察
broker_activemqartemis_cr.yaml
示例 CR 文件中,image
属性被设置为占位符
的默认值。这个值表示,默认情况下,image
属性没有指定用于部署的代理容器镜像。要了解 Operator 如何确定要使用的适当代理容器镜像,请参阅 第 2.4 节 “Operator 如何选择容器镜像”。注意在
metadata
部分,您只需要包含namespace
属性,只有在您 使用 OpenShift Container Platform Web 控制台创建 CR 时才指定一个值。您指定的值是代理部署的 OpenShift 项目的名称。在 CR 的
deploymentPlan
部分中,添加resources
部分。添加限制和请求
cpu
和memory
属性并指定值。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow limits.cpu
- 在部署中的 Pod 中运行的每个代理容器都不能超过这个主机节点 CPU 的使用情况。
limits.memory
- 在部署中的 Pod 中运行的每个代理容器都不能超过这个数量的主机内存用量。
requests.cpu
- 在部署中的 Pod 中运行的每个代理容器都请求这个数量的主机 CPU。这个值是代理容器运行 所需的最小 CPU 量。
requests.memory
- 部署中运行的 Pod 中的每个代理容器都请求这个数量的主机内存。这个值是代理容器运行所需的 最小内存量。
部署 CR 实例。
使用 OpenShift 命令行界面:
- 保存 CR 文件。
切换到您要在其中创建代理部署的项目。
oc project <project_name>
$ oc project <project_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 CR 实例。
oc create -f <path/to/custom_resource_instance>.yaml
$ oc create -f <path/to/custom_resource_instance>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 OpenShift Web 控制台:
- 配置完 CR 后,点 Create。