resaware_nri_plugins配置详解:从CRD定义到部署配置的完整手册
resaware_nri_plugins配置详解:从CRD定义到部署配置的完整手册
【免费下载链接】resaware_nri_pluginsThe Resource Aware Plugin is a set of plugins that provide flexible allocation of container resources based on the NRI interface.项目地址: https://gitcode.com/openeuler/resaware_nri_plugins
前往项目官网免费下载:https://ar.openeuler.org/ar/
resaware_nri_plugins是基于NRI接口的容器资源感知插件集合,能够为openEuler系统提供灵活的容器资源分配能力。本文将详细介绍其CRD定义、配置样例和部署流程,帮助用户快速掌握资源管理的核心配置方法。
一、核心CRD定义解析
1.1 Oenuma资源定义
Oenuma CRD用于定义NUMA节点资源分配策略,核心配置位于config/crd/resource.sop.huawei.com_oenumas.yaml。该文件定义了:
- 节点级NUMA配置:通过
node.numa字段指定每个NUMA节点的CPU集(cpuset)和内存集(memset) - Pod亲和性规则:通过
node.podAffinity定义容器与NUMA节点的绑定关系 - 动态更新控制:
updateenable字段控制配置是否允许热更新
关键配置示例:
spec: node: - name: node-01 numa: - numaNum: 0 cpuset: "0-15" memset: "0-31G" podAffinity: - podName: app-pod numaNum: 0 containers: - name: app-container containerId: "container-123" cpuset: "0-7" memset: "0-15G"1.2 Whitelist资源定义
Whitelist CRD用于管理资源分配的白名单策略,配置文件路径为config/crd/resource.sop.huawei.com_whitelists.yaml。主要功能包括:
- 生效开关:
effectiveflag控制白名单是否启用 - 目标Pod选择:通过
targetPods指定允许使用资源的Pod列表 - 命名空间隔离:支持按命名空间维度管理白名单
基础配置结构:
spec: effectiveflag: true name: default-whitelist targetPods: - namespace: production names: - app-server - db-service二、实用配置样例参考
2.1 NUMA亲和性配置
config/samples/numaaffinity.yaml提供了典型的NUMA亲和性配置样例,适合需要低延迟数据处理的应用:
- 明确指定Pod到NUMA节点的绑定关系
- 精细控制容器级别的CPU和内存分配
- 支持多节点NUMA拓扑配置
2.2 白名单策略配置
config/samples/whitelist.yaml展示了如何配置资源访问白名单:
- 启用白名单过滤非授权Pod
- 按命名空间和Pod名称进行精细化控制
- 支持批量添加Pod到白名单
三、部署配置指南
3.1 DaemonSet部署清单
项目提供了完整的DaemonSet部署配置deploy/numa-daemonset.yaml,关键配置项包括:
3.1.1 权限配置
- 定义
oenuma-watch角色,授予CRD资源的watch、get和update权限 - 绑定
pod-watch集群角色,允许监控节点和Pod资源状态
3.1.2 容器配置
- 使用特权模式运行,确保资源控制能力
- 挂载必要的主机路径:
/var/run/nri/nri.sock:NRI接口通信/sys/fs/resctrl/:资源控制文件系统/sys/fs/cgroup/:CGroup控制接口
3.1.3 环境变量
- 注入Pod名称、命名空间和节点名称等元数据
- 通过
-config-namespace参数指定配置所在命名空间
3.2 部署步骤
部署CRD资源:
kubectl apply -f config/crd/resource.sop.huawei.com_oenumas.yaml kubectl apply -f config/crd/resource.sop.huawei.com_whitelists.yaml部署DaemonSet:
kubectl apply -f deploy/numa-daemonset.yaml验证部署状态:
kubectl get daemonset numaadj -n tcs
四、配置最佳实践
4.1 性能优化配置
- NUMA节点绑定:为 latency-sensitive 应用配置独占NUMA节点
- 资源隔离:使用resctrl子系统实现Pod间资源隔离
- 动态调整:通过
updateenable: "true"启用配置热更新
4.2 安全配置建议
- 最小权限原则:限制白名单范围,仅授权必要Pod
- 命名空间隔离:通过
targetPods.namespace实现多租户隔离 - 定期审计:监控config/samples/test.yaml中的测试配置,验证权限控制有效性
五、常见问题解决
5.1 配置不生效
- 检查CRD是否成功部署:
kubectl get crd | grep resource.sop.huawei.com - 验证白名单
effectiveflag是否设置为true - 确认DaemonSet pods状态正常:
kubectl logs -f <numaadj-pod> -n tcs
5.2 资源分配异常
- 检查NUMA节点配置是否与实际硬件匹配
- 验证cpuset格式是否正确(如"0-15,24-31")
- 查看resctrl挂载状态:
kubectl exec -it <numaadj-pod> -n tcs -- ls /sys/fs/resctrl/
通过本文的配置指南,您可以快速实现resaware_nri_plugins的部署和优化,充分发挥openEuler系统的容器资源管理能力。如需更深入的功能开发,可参考项目源码中的cmd/nriplugin/main.go实现逻辑。
【免费下载链接】resaware_nri_pluginsThe Resource Aware Plugin is a set of plugins that provide flexible allocation of container resources based on the NRI interface.项目地址: https://gitcode.com/openeuler/resaware_nri_plugins
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
