ovn-k8s安装卸载

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

详细参考