在离线应用混部中通过使用容器网络限速,帮助用户为不同应用配置网络带宽限制与优先级,提升集群资源隔离与网络体验。
适用场景
需要对容器的入站/出站网络带宽进行限制,防止单一业务占用过多带宽。
希望为延迟敏感或大带宽业务设置网络优先级,实现更优的流量调度。
功能说明
带宽限制
网络优先级控制
配置方法
启用网络优先级能力(可选)
如需使用网络优先级控制,请确保集群已启用 Cubecni 的优先级功能:
编辑 Cubecni 配置:
kubectl -n kube-system edit cm cubecni-config
在
10-cubecni.conflist
下添加/修改enable_network_priority
为true
:{ "cniVersion": "0.3.1", "name": "cubecni", "plugins": [ { "type": "cubecni", "capabilities": {"bandwidth": true}, "enable_network_priority": true } ]}
滚动重启 Cubecni Pod:
kubectl -n kube-system rollout restart ds/cubecni kubectl -n kube-system get po -l app=cubecni -owide -w
配置带宽与优先级注解
在 Pod/Deployment YAML 的 metadata.annotations
字段中添加带宽和优先级注解。例如:
apiVersion: apps/v1kind: Deploymentmetadata:
name: netperf-client-8000
namespace: demospec:
replicas: 2
template:
metadata:
annotations:
kubernetes.io/egress-bandwidth: 10M
kubernetes.io/ingress-bandwidth: 20M
k8s.ctyun.com/network-priority: guaranteed
spec:
containers:
- name: netperf
image: cilium-netperf:2.0
操作步骤
测试与验证流程
部署带宽限制测试 server(hostNetwork)
apiVersion: apps/v1kind: Deploymentmetadata: name: netserver-hostnet namespace: demospec: replicas: 1 template: metadata: labels: app: netserver-hostnet spec: hostNetwork: true containers: - name: netserver image: cilium-netperf:2.0 command: ["netserver", "-4", "-p", "8000", "-D"]
部署带宽限制 client,设置带宽注解
apiVersion: apps/v1kind: Deploymentmetadata: name: netperf-client-8000 namespace: demospec: replicas: 2 template: metadata: annotations: kubernetes.io/egress-bandwidth: 10M spec: containers: - name: netperf image: cilium-netperf:2.0 command: ["sleep", "infinity"]
进入 client Pod,使用
netperf
工具测试带宽kubectl exec -it <client-pod> -n demo -- netperf -H <server-ip> -l 60 -t TCP_STREAM
可通过宿主机
tc
命令进一步验证带宽限制规则tc qdisc show tc class show dev <ethX>
常见问题与说明
注解配置无效?
请确认集群网络插件为 Cubecni,且已启用带宽/优先级能力。
检查注解拼写及 YAML 缩进。
优先级控制未生效?
需确保 Cubecni 配置项
enable_network_priority
为true
并已重启插件。带宽限制未达到预期?
实际带宽受节点网络、Pod 资源等多因素影响,建议多次测试取均值。
注意
带宽与优先级注解仅对支持的网络插件(如 Cubecni)生效。
修改插件配置需谨慎,避免影响生产流量。
测试时建议隔离环境,避免干扰其他业务。