oncn-bwm部署指南Kubernetes环境下的快速集成与验证步骤【免费下载链接】oncn-bwmPod bandwidth management in mixed deployment scenarios of online and offline services项目地址: https://gitcode.com/openeuler/oncn-bwm前往项目官网免费下载https://ar.openeuler.org/ar/oncn-bwm是openEuler社区推出的专业带宽管理工具专门用于解决Kubernetes集群中在线与离线业务混合部署场景下的网络带宽管理难题。本文将为您提供完整的oncn-bwm部署指南帮助您在Kubernetes环境下快速集成并验证这一强大的带宽管理解决方案。为什么选择oncn-bwm✨在混合部署场景中在线业务如实时服务、Web应用需要保证低延迟和高可靠性而离线业务如批处理、数据备份则对带宽利用率有较高要求。oncn-bwm通过智能的带宽管理策略实现了优先级区分在线业务优先级0离线业务优先级-1动态带宽分配基于在线业务水线动态调整离线业务带宽细粒度控制支持出向egress和入向ingress双向流量管理Kubernetes原生集成通过CNI插件和DaemonSet实现无缝集成前置准备与系统要求在开始部署之前请确保您的环境满足以下要求硬件与系统要求Kubernetes集群版本1.16操作系统openEuler 20.03 LTS SP3或更高版本内核版本5.10或更高支持eBPF网络接口至少一个物理网卡或虚拟网卡软件依赖Docker或containerd容器运行时CNI插件Calico、Flannel等eBPF支持已启用基础构建工具cmake、make、gcc快速部署步骤步骤1克隆项目仓库首先从官方仓库获取oncn-bwm源代码git clone https://gitcode.com/openeuler/oncn-bwm cd oncn-bwm步骤2构建核心组件构建bwmcli命令行工具和eBPF程序# 创建构建目录 mkdir build cd build # 配置并构建 cmake .. make # 安装到系统目录 mkdir -p /usr/share/bwmcli install -Dpm 0500 bpf/CMakeFiles/bwm_prio_kern.dir/bwm_prio_kern.c.o /usr/share/bwmcli/bwm_prio_kern.o install -Dpm 0500 bpf/CMakeFiles/bwm_tc.dir/bwm_tc.c.o /usr/share/bwmcli/bwm_tc.o install -Dpm 0500 bpf/CMakeFiles/bwm_tc_i.dir/bwm_tc_i.c.o /usr/share/bwmcli/bwm_tc_i.o install -Dpm 0500 bwmcli /usr/bin install -Dpm 0500 tools/bwm_monitor.bt /usr/bin install -Dpm 0500 tools/bwm_monitor_ingress.bt /usr/bin步骤3构建Kubernetes组件进入多优先级带宽管理目录并构建相关组件cd multi_prio_bwm # 构建Go组件 make build # 构建容器镜像需要Docker环境 make image构建完成后您将获得以下关键组件bwm-daemon主守护进程alg-daemon算法守护进程bwm-cniCNI插件cmdctl命令行控制工具步骤4配置CNI网络插件创建CNI配置文件将bwm-cni插件集成到您的CNI链中{ name: generic-veth, cniVersion: 1.0.0, plugins: [ { type: calico, datastore_type: kubernetes, nodename: __KUBERNETES_NODE_NAME__, mtu: 1500, ipam: { type: calico-ipam }, container_settings: { allow_ip_forwarding: true }, kubernetes: { kubeconfig: /etc/cni/net.d/calico-kubeconfig } }, { name: bwm-cni, log_level: debug, type: bwm-cni, cniVersion: 1.0.0 } ] }将此配置文件保存为/etc/cni/net.d/10-bwm.conflist。步骤5部署Kubernetes DaemonSet使用提供的YAML文件部署oncn-bwm到您的Kubernetes集群# 应用RBAC配置和服务账号 kubectl apply -f multi_prio_bwm/install/kubernetes/oncn-bwm.yaml这个DaemonSet会在每个节点上部署以下组件init-container安装CNI插件oncn-bwm-daemonset主守护进程负责带宽管理alg-daemon算法守护进程负责动态带宽调整步骤6验证部署状态检查DaemonSet和Pod的运行状态# 查看DaemonSet状态 kubectl get daemonset -n default # 查看Pod运行状态 kubectl get pods -n default -l nameoncn-bwm-daemonset # 查看节点上的bwm组件日志 kubectl logs -n default pod-name -c oncn-bwm-daemonset配置与使用指南⚙️基本配置示例创建一个使用oncn-bwm带宽管理的Pod示例apiVersion: apps/v1 kind: Deployment metadata: name: qostest namespace: default labels: app: qostest spec: replicas: 10 selector: matchLabels: app: qostest template: metadata: labels: app: qostest annotations: oncn-bwm.openeuler.org/egress-bandwidth: {request:600Mb,limit:800Mb,priority:1} oncn-bwm.openeuler.org/ingress-bandwidth: {request:600Mb,limit:800Mb,priority:1} spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80带宽管理注解说明oncn-bwm通过Pod注解来配置带宽管理策略注解名称描述示例值oncn-bwm.openeuler.org/egress-bandwidth出向带宽配置{request:600Mb,limit:800Mb,priority:1}oncn-bwm.openeuler.org/ingress-bandwidth入向带宽配置{request:600Mb,limit:800Mb,priority:1}参数说明request保证带宽最低可用带宽limit限制带宽最高可用带宽priority优先级0在线业务-1离线业务命令行工具使用在节点上使用bwmcli工具进行手动配置和监控# 1. 查看网卡状态 bwmcli -p devs # 2. 配置Pod出向QoS bwmcli -s /sys/fs/cgroup/net_cls/online 0 # 标记在线业务 bwmcli -s /sys/fs/cgroup/net_cls/offline -1 # 标记离线业务 bwmcli -e eth0 # 使能eth0出向QoS # 3. 配置离线业务带宽限制 bwmcli -s bandwidth 20mb,1gb # 设置带宽低20MB高1GB bwmcli -s waterline 30mb # 设置水线30MB # 4. 查询配置状态 bwmcli -p bandwidth # 查询出向带宽配置 bwmcli -p waterline # 查询水线配置 bwmcli -p stats # 查看流量统计信息验证与测试测试环境准备oncn-bwm提供了完整的测试套件您可以使用以下步骤进行验证# 进入测试目录 cd multi_prio_bwm/test/pod_test/egress/ # 运行出向带宽测试 ./bwm-test-egress.sh 1000 2 200Mb 3 300Mb 5 0 128KB 1测试参数说明总带宽1000Mb优先级2客户端数2个限制200Mb优先级1客户端数3个限制300Mb优先级0客户端数5个无限制数据包大小128KB连接数1监控与日志查看使用提供的监控工具查看实时带宽使用情况# 监控出向流量 bwm_monitor.bt # 监控入向流量 bwm_monitor_ingress.bt # 查看DaemonSet日志 kubectl logs -n default -l nameoncn-bwm-daemonset -f # 查看算法守护进程日志 kubectl logs -n default -l nameoncn-bwm-daemonset -c alg-daemon -f性能验证指标在测试过程中关注以下关键指标带宽分配准确性各优先级Pod是否获得正确的带宽分配动态调整响应在线业务带宽变化时离线业务带宽是否及时调整系统稳定性长时间运行是否出现内存泄漏或性能下降网络延迟带宽管理对网络延迟的影响是否在可接受范围内故障排除与常见问题常见问题1CNI插件无法加载症状Pod创建失败CNI插件报错解决方案# 检查CNI配置文件 cat /etc/cni/net.d/10-bwm.conflist # 检查bwm-cni插件是否存在 ls -la /opt/cni/bin/bwm-cni # 重启kubelet服务 systemctl restart kubelet常见问题2带宽限制不生效症状Pod带宽未按配置限制解决方案# 检查Pod注解是否正确 kubectl describe pod pod-name | grep oncn-bwm # 检查节点上的bwmcli配置 bwmcli -p devs bwmcli -p bandwidth bwmcli -p waterline # 查看eBPF程序状态 bpftool prog list | grep bwm常见问题3DaemonSet Pod无法启动症状oncn-bwm-daemonset Pod处于CrashLoopBackOff状态解决方案# 查看详细错误日志 kubectl logs -n default pod-name --previous # 检查节点内核版本需要5.10 uname -r # 检查eBPF支持 ls /sys/fs/bpf/最佳实践与优化建议1. 合理设置水线值水线值决定了在线业务和离线业务的带宽分配策略# 根据实际业务需求设置水线 # 在线业务平均带宽为50MB峰值100MB时 bwmcli -s waterline 80mb # 设置为平均值的1.6倍 # 设置带宽范围 bwmcli -s bandwidth 20mb,500mb # 离线业务最低20MB最高500MB2. 多优先级配置策略对于复杂的业务场景可以采用多级优先级策略# 高优先级在线业务 priority: 0 # 最高优先级无带宽限制 # 中优先级业务 priority: 1 # 中等优先级有限带宽保障 # 低优先级离线业务 priority: -1 # 最低优先级动态带宽分配3. 监控与告警配置建议配置以下监控指标各优先级Pod的实时带宽使用率在线业务水线触发频率系统资源使用情况CPU、内存eBPF程序运行状态4. 滚动更新策略在生产环境中使用滚动更新确保服务连续性# 更新DaemonSet配置 kubectl apply -f multi_prio_bwm/install/kubernetes/oncn-bwm.yaml # 监控更新进度 kubectl rollout status daemonset/oncn-bwm-daemonset -n default总结与展望oncn-bwm为Kubernetes混合部署场景提供了强大的带宽管理能力通过智能的优先级调度和动态带宽分配实现了在线业务服务质量保障与离线业务资源利用率的平衡。核心优势✅ 基于eBPF的高性能实现✅ 原生Kubernetes集成✅ 双向流量管理出向入向✅ 动态带宽调整机制✅ 多优先级支持适用场景云原生应用的混合部署微服务架构中的服务质量保障大数据处理与实时服务共存环境边缘计算节点的带宽优化通过本文的部署指南您应该能够在Kubernetes环境中快速集成和验证oncn-bwm。随着openEuler社区的持续发展oncn-bwm将不断优化和完善为更多混合部署场景提供更强大的网络带宽管理能力。下一步建议在生产环境的小规模节点上先行测试根据实际业务负载调整水线和带宽参数建立完善的监控告警体系参与openEuler社区贡献您的使用经验和改进建议祝您在Kubernetes带宽管理之旅中一帆风顺【免费下载链接】oncn-bwmPod bandwidth management in mixed deployment scenarios of online and offline services项目地址: https://gitcode.com/openeuler/oncn-bwm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考