OVN-Kubernetes CNI(Container Network Interface)在中科驭数云原生网络流量卸载、极速容器、云平台等解决方案中为Kubernetes集群提供默认的POD与Service网络通信能力,并将Kubernetes网络流量卸载到DPU上,从而为上层应用提供极低时延和高带宽的网络转发性能。
在Kubernetes集群网络中有一些最基本的核心网络需求诸如:
- Pod上的每一个网络接口都必须有自己唯一的IP;
- POD应具备在没有NAT的情况下与Kubernetes集群中的任何其他POD通信的能力;
- 节点上的Agents(例如:系统守护进程,kubelet)可以与该节点上的所有POD通信。
然而kubernetes本身并没有内置工具或组件解决上述核心网络需求,而是通过遵循Container Network Interface(CNI)规范的overlay网络插件来提供上述核心网络能力的。ovn-kubernetes和诸如Flannel,Calico等知名CNI一样,为kubernetes集群网提供核心网络所需能力。
OVN-Kubernetes使用OVN(Open Virtual Network)作为kubernetes网络的控制器来抽象并管理工作节点上的overlay网络流量,支持使用Vxlan/Geneve协议在各节点间创建underlay网络,并通过一个运行在DPU SOC上的OVS将转发面下沉到DPU上。开启DPU hardware offload特性后,可将kubernetes网络流量完全卸载到DPU上以实现高吞吐和极低时延的极致性能提升。
软件版本
- Kubernetes >= 1.24。
- Docker >= 1.12.6, Containerd >= 1.3.4。
- 操作系统: CentOS 7/8, Ubuntu 16.04/18.04/20.04。
一键安装
修改配置文件 设置 –vpc-enable为true
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| dpu_mode_enable: true dpu_host_pf0: "enp0s10" dpu_host_pf1: "enp0s11" dpu_host_vf_num: "2-7" dpu_host_vf0: "enp0s10v0" gateway_mode: "shared" tunnel_type: "vxlan" pod_cidr: "10.244.0.0/16" configureable_parameters: - --gateway-nexthop=172.16.10.1 - --multicast-enabled=true - --mtu=1400 - --disable-pkt-mtu-check=true - --routable_mtu=1400 - --encap_csum=false - --vpc-enable=true
host_registry: "harbor.yusur.tech/yusur_ovn/ovn-kubernetes:test_push_0319" dpu_registry: "harbor.yusur.tech/yusur_ovn/ovn-kubernetes:test_push_0319"
enable_calico: false calico_ippool: "10.144.0.0/16" calico_network_dev: "enp0s10"
roles: - name: master label: "k8s.ovn.org/role: \"master\"" - name: worker label: "k8s.ovn.org/role: \"worker\"" - name: dpu-host label: "k8s.ovn.org/dpu-host:" - name: dpu label: "k8s.ovn.org/dpu:"
nodes: - hostname: "master" role: "master" k8s_ip: "172.16.10.100" user: "root" passwd: "root" dpu_mode: false
- hostname: "worker1" role: "worker" k8s_ip: "172.16.10.101" user: "root" passwd: "root" dpu_mode: false
- hostname: "host1" role: "worker" k8s_ip: "172.16.10.200" user: "root" passwd: "root" dpu_mode: true dpu_ip: "172.16.10.201" dpu_user: "root" dpu_passwd: "root" dpu_network_name: "brp0" dpu_pci0: "00:0a.0" dpu_pci1: "00:0b.0" vdpa_mode: false ready_delete: true
- hostname: "host2" role: "worker" k8s_ip: "172.16.10.202" user: "root" passwd: "root" dpu_mode: true dpu_ip: "172.16.10.203" dpu_user: "root" dpu_passwd: "root" dpu_network_name: "brp0" dpu_pci0: "00:0a.0" dpu_pci1: "00:0b.0" vdpa_mode: true
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| cat /opt/yusur/hados/scripts/ovn-kubernetes/hados_ovn-kubernetes-deploy/scripts/install.sh img=harbor.yusur.tech/hados/hados_ovn-kubernetes:1.0.24.2 kubeconfig=/etc/kubernetes/admin.conf nerdctl run -d --name install --net host --entrypoint python3 \ -w /root/autodeploy/ \ -v $PWD/autodeploy:/root/autodeploy/ \ -v $kubeconfig:/root/.kube/config \ -v $PWD/:/var/log/install/ $img install.py
nerdctl logs -f install
nerdctl rm install
tail -fn200 install.log
|
详细参考
一键卸载
1 2 3 4 5 6 7 8 9 10
| img=harbor.yusur.tech/hados/hados_ovn-kubernetes:1.0.24.2 kubeconfig=/etc/kubernetes/admin.conf nerdctl run -it --rm --net host --entrypoint python3 \ -w /root/autodeploy/ \ -v $PWD/autodeploy:/root/autodeploy/ \ -v $kubeconfig:/root/.kube/config \ -v $PWD/:/var/log/install/ $img clear.py
tail -fn200 install.log
|
详细参考