4.5. 为基于 Operator 的代理部署配置资源限制和请求
当您创建基于 Operator 的代理部署时,部署中的代理 Pod 在 OpenShift 集群的一个节点上在 StatefulSet 中运行。您可以为部署配置自定义资源(CR)实例,以指定在每个 Pod 中运行的代理容器所使用的 host-node 计算资源。通过为 CPU 和内存(RAM)指定限制和请求值,您可以确保代理 Pod 的满意性能。
- 在 首次部署 CR 前,您必须为代理部署添加限制和请求的配置。您不能 将配置添加到已在运行的代理部署中。
- 红帽无法为限制和请求推荐值,因为它们基于您的特定消息传递系统用例和您已实施的架构。但是,建议您 在为生产环境配置这些值前测试和调整开发环境中的这些值。
- 在初始化每个代理 Pod 时,Operator 会运行名为 Init Container 的容器类型。您为每个代理容器配置的任何资源限制和请求也适用于每个初始容器。有关在代理部署中使用初始容器的更多信息,请参阅 第 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)或二进制等效(Ei、Pi、Ti、Gi、Mi、K)指定值。您指定的值必须包含一个单元。
4.5.1. 配置代理资源限制和请求
以下示例演示了如何为您的代理部署配置主自定义资源(CR)实例,以便为部署中 Pod 中运行的每个代理容器设置 CPU 和内存限值和请求。
- 在 首次部署 CR 前,您必须为代理部署添加限制和请求的配置。您不能 将配置添加到已在运行的代理部署中。
- 红帽无法为限制和请求推荐值,因为它们基于您的特定消息传递系统用例和您已实施的架构。但是,建议您 在为生产环境配置这些值前测试和调整开发环境中的这些值。
先决条件
- 您应该熟悉如何使用 CR 实例创建基本的代理部署。请参阅 第 3.4.1 节 “部署基本代理实例”。
流程
为代理部署开始配置自定义资源(CR)实例。
使用 OpenShift 命令行界面:
以具有特权的用户身份登录 OpenShift,以在您要创建部署的项目中部署 CR。
oc login -u <user> -p <password> --server=<host:port>
-
打开名为
broker_activemqartemis_cr.yaml
的示例 CR 文件,该文件包含在您下载并提取的 Operator 安装存档的deploy/crs
目录中。
使用 OpenShift Container Platform Web 控制台:
- 以具有特权的用户身份登录控制台,以在您要创建部署的项目中部署 CR。
-
根据主代理 CRD 启动一个新的 CR 实例。在左侧窗格中,单击
。 - 单击 ActiveMQArtemis CRD。
- 点 实例 选项卡。
单击 Create ActiveMQArtemis。
在控制台中,会打开 YAML 编辑器,供您配置 CR 实例。
对于基本的代理部署,配置可能类似如下。此配置是
broker_activemqartemis_cr.yaml
示例 CR 文件的默认内容。apiVersion: broker.amq.io/v2alpha4 kind: ActiveMQArtemis metadata: name: ex-aao application: ex-aao-app spec: version: 7.9.3 deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true
请注意,在
broker_activemqartemis_cr.yaml
示例 CR 文件中,image属性
被设置为默认值占位符
。此值表示image
属性默认不指定用于部署的代理容器镜像。要了解 Operator 如何决定要使用的适当代理容器镜像,请参阅 第 2.4 节 “Operator 如何选择容器镜像”。在 CR 的
deploymentPlan
部分中,添加一个resources
部分。添加限值
和请求
子部分。在各个子部分中,添加一个cpu 和 memory
属性并指定值。例如:
spec: version: 7.9.3 deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true resources: limits: cpu: "500m" memory: "1024M" requests: cpu: "250m" memory: "512M"
limits.cpu
- 在部署中运行的 Pod 中运行的每个代理容器都不能超过这个数量的主机节点 CPU 用量。
limits.memory
- 在部署中运行的 Pod 中运行的每个代理容器都不能超过这个数量的主机节点内存用量。
requests.cpu
- 部署中在 Pod 中运行的每个代理容器都会请求这个数量的主机节点 CPU。这个值是代理容器运行 的最小 CPU 量。
requests.memory
- 部署中在 Pod 中运行的每个代理容器都会请求这个数量的主机节点内存。这个值是代理容器运行 的最小 内存量。
部署 CR 实例。
使用 OpenShift 命令行界面:
- 保存 CR 文件。
切换到您要在其中创建代理部署的项目。
$ oc project <project_name>
创建 CR 实例。
$ oc create -f <path/to/custom_resource_instance>.yaml
使用 OpenShift Web 控制台:
- 配置完 CR 后,点 Create。