Kube-OVN 是一个符合 CNI 规范的网络组件,需要依赖 Kubernetes 环境运行。下面是我们测试过的系统及软件版本

操作系统

  • CentOS 7.5/7.6/7.7, 内核版本需要大于 3.10.0-898
  • Ubuntu 16.04,需要升级内核至 4.13 以上或者自行编译 ovs 2.12.0 内核模块
  • Ubuntu 18.04

CentOS 内核检查

  1. [root@node2 ~]# uname -a
  2. Linux node2 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

如果内核版本为 3.10.0-862 内核 netfilter 模块存在 bug 会导致 Kube-OVN 内置负载均衡器无法工作,参考Floating IPs broken after kernel upgrade to Centos/RHEL 7.5 - DNAT not working。需要对内核进行升级。

  1. [root@node2 ~]# yum upgrade kernel

建议使用 CentOS 官方对应版本最新内核保证系统的安全。

Ubuntu 16.04 编译 ovs 内核模块

Ubuntu 16.04 自带的 ovs 内核模块版本较老,需要手动编译替换。建议升级至 4.13 以上内核,否则需要按下面的步骤手工构建内核模块。

  1. $ wget https://www.openvswitch.org/releases/openvswitch-2.12.0.tar.gz
  2. $ tar -xvf openvswitch-2.12.0.tar.gz
  3. $ cd openvswitch-2.11.1
  4. $ sudo apt-get update
  5. $ sudo apt-get install -y dh-autoreconf libssl-dev libcap-ng-dev openssl python python-pip
  6. $ sudo pip install six
  7. $ ./boot.sh
  8. $ ./configure --with-linux=/lib/modules/$(uname -r)/build
  9. $ make -j
  10. $ sudo make install
  11. $ sudo make modules_install
  12. $ sudo /sbin/modprobe openvswitch

需要在每台宿主机执行相同的操作,由于编译的内核模块会根据内核版本而不同,暂时没办法提供统一的内核模块。

Kubernetes & Docker

Kubernetes >= 1.11, Docker >= 1.12.6。

网络插件清理

Kube-OVN 打包了所需的 CNI 插件,无需单独安装 CNI 插件。为了避免其他网络插件遗留规则对网络产生影响,建议在一个没有安装过其他网络插件的 Kubernetes 集群上安装 Kube-OVN。

如果之前集群装过其他网络插件,需要预先删除其他网络插件以及对应的网卡,iptables 规则,路由规则等网络配置。注意检查 /etc/cni/net.d/ 路径下无其他网络插件配置文件。