Openshift的网络之五:OVS SDN CNI网络流控机制

一、前言

OVS使用Linux内核自带的traffic-control机制进行流量控制以实现SDN QoS,一般的内核都会将"ingress qdisc"(Queueing Disciplines)编译在内。


ingress_policing_rate这个网络接口最大的发包速率 ingress_policing_burst最大发包率之外的额外发包能力,以应对突发流量


Openshift由于使用OVS作为SDN的底层,所以也可以在部署POD应用的时候配置速率限制,保证QoS目标。

本文使用iperf来测试在Openshift配置和没有配置QoS的时候的网络速率来展示Openshift的带宽控制能力。

载自https://blog.csdn.net/cloudvtech

二、实验一:没有带宽限制的POD部署

1. nginx部署文件nginx.yaml如下:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        nginx: nginx
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80 

2.在部署之后,在nginx的POD里面运行iperf服务端

apt-get update  
apt-get install iperf
iperf -s # start iperf server inside the server POD 

3.在同一project的另外一个POD里面运行iperf的客户端

iperf -c 10.129.2.52 -t 10 

4.测试结果如下

服务端nginx POD内的带宽:

Openshift的网络之五:OVS SDN CNI网络流控机制_第1张图片

客户端的带宽:

Openshift的网络之五:OVS SDN CNI网络流控机制_第2张图片

都是达到了内部bridge的最高速率

载自https://blog.csdn.net/cloudvtech

三、实验二:配置10Mb进出带宽限制的POD部署

1.部署文件nginx2.yaml如下:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment-2
  labels:
    app: nginx2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx2
  template:
    metadata:
      labels:
        app: nginx2
      annotations:
        kubernetes.io/ingress-bandwidth : 10M
        kubernetes.io/egress-bandwidth : 10M
    spec:
      nodeSelector:
        nginx: nginx
      containers:
      - name: nginx2
        image: 200.222.0.135:5000/nginx
        ports:
        - containerPort: 80 


2.在部署之后,在nginx的POD里面运行iperf服务端

部署POD之后OVS进行流控配置的日志如下:


3.在同一project的另外一个POD里面运行iperf的客户端


4.测试结果

服务端nginx POD内的带宽:

Openshift的网络之五:OVS SDN CNI网络流控机制_第3张图片


客户端的带宽:

Openshift的网络之五:OVS SDN CNI网络流控机制_第4张图片

进出的传输速率都在10Mb左右


5.查看TC的配置

Openshift的网络之五:OVS SDN CNI网络流控机制_第5张图片

载自https://blog.csdn.net/cloudvtech

四、实验三:配置1024Mb进出带宽限制的POD部署

1.部署文件nginx3.yaml如下:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment-3
  labels:
    app: nginx3
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx3
  template:
    metadata:
      labels:
        app: nginx3
      annotations:
        kubernetes.io/ingress-bandwidth: 1024M
        kubernetes.io/egress-bandwidth: 1024M
    spec:
      nodeSelector:
        nginx: nginx
      containers:
      - name: nginx3
        image: 200.222.0.135:5000/nginx
        ports:
        - containerPort: 80 


2.在部署之后,在nginx的POD里面运行iperf服务端

部署POD之后OVS进行流控配置的日志如下:


3.在同一project的另外一个POD里面运行iperf的客户端


4.测试结果

服务端nginx POD内的带宽:

Openshift的网络之五:OVS SDN CNI网络流控机制_第6张图片
客户端的带宽:
Openshift的网络之五:OVS SDN CNI网络流控机制_第7张图片


5.查看TC的配置

Openshift的网络之五:OVS SDN CNI网络流控机制_第8张图片
载自https://blog.csdn.net/cloudvtech

五、Openshift SDN里面流控相关的代码

Openshift的网络之五:OVS SDN CNI网络流控机制_第9张图片

载自https://blog.csdn.net/cloudvtech





你可能感兴趣的:(容器网络,kubernetes,Openshift,OVS,SDN)