LOADING

加载过慢请开启缓存 浏览器默认开启

Kube-OVN——安装&部署

Kube-OVN——安装&部署

准备工作

Kube-OVN 是一个符合 CNI 规范的网络组件,其运行需要依赖 Kubernetes 环境及对应的内核网络模块。 以下是通过测试的操作系统和软件版本,环境配置和所需要开放的端口信息。

软件版本

Kubernetes >= 1.23。
Docker >= 1.12.6, Containerd >= 1.3.4。
操作系统: CentOS 7/8, Ubuntu 16.04/18.04/20.04。

  • 其他 Linux 发行版,需要检查一下内核模块是否存在 geneve, openvswitch, ip_tables 和 iptable_nat,Kube-OVN 正常工作依赖上述模块。
modinfo geneve
modinfo openvswitch
modinfo ip_tables
modinfo iptable_nat

注意事项:

  • 如果内核版本为 3.10.0-862 内核 netfilter 模块存在 bug 会导致 Kube-OVN 内置负载均衡器无法工作,需要对内核升级,建议使用 CentOS 官方对应版本最新内核保证系统的安全。相关内核 bug 参考 Floating IPs broken after kernel upgrade to Centos/RHEL 7.5 - DNAT not working。
  • Rocky Linux 8.6 的内核 4.18.0-372.9.1.el8.x86_64 存在 TCP 通信问题 TCP connection failed in Rocky Linux 8.6,请升级内核至 4.18.0-372.13.1.el8_6.x86_64 或更高版本。
  • 如果内核版本为 4.4 则对应的内核 openvswitch 模块存在问题,建议升级或手动编译 openvswitch 新版本模块进行更新
  • Geneve 隧道建立需要检查 IPv6,可通过 cat /proc/cmdline 检查内核启动参数, 相关内核 bug 请参考 Geneve tunnels don’t work when ipv6 is disabled。
#查看内核版本
root@k8s-node2:~# uname -r
6.8.0-52-generic
  • 本文使用Ubuntu 22.04,内核版本6.8.0-52-generic

环境配置

  • Kernel 启动需要开启 IPv6, 如果 kernel 启动参数包含 ipv6.disable=1 需要将其设置为 0。
#查看是否开启ipv6
root@k8s-master:~# cat /proc/sys/net/ipv6/conf/all/disable_ipv6
0
  • kube-proxy 正常工作,Kube-OVN 可以通过 Service ClusterIP 访问到 kube-apiserver。
  • 确认 kubelet 配置参数开启了 CNI,并且配置在标准路径下, kubelet 启动时应包含如下参数 –network-plugin=cni –cni-bin-dir=/opt/cni/bin –cni-conf-dir=/etc/cni/net.d。
  • 确认未安装其他网络插件,或者其他网络插件已经被清除,检查 /etc/cni/net.d/ 路径下无其他网络插件配置文件。如果之前安装过其他网络插件,建议删除后重启机器清理残留网络资源。

清楚各节点/etc/cni/net.d/下的配置文件后一定重启服务器

端口信息

组件 端口 用途
ovn-central 6641/tcp ovn nb db server 监听端口
ovn-central 6642/tcp ovn sb db server 监听端口
ovn-central 6643/tcp ovn northd server 监听端口
ovn-central 6644/tcp ovn raft server 监听端口
ovn-ic 6645/tcp ovn ic nb db server 监听端口
ovn-ic 6646/tcp ovn ic sb db server 监听端口
ovs-ovn Geneve 6081/udp, STT 7471/tcp, Vxlan 4789/udp 隧道端口
kube-ovn-controller 10660/tcp 监控监听端口
kube-ovn-daemon 10665/tcp 监控监听端口
kube-ovn-monitor 10661/tcp 监控监听端口

一键安装

  • 参考官方文档
  • 修改配置时可能需要用到以下命令
#查看当前apiserver 的 service-cluster-ip-range
grep -A 5 "service-cluster-ip-range" /etc/kubernetes/manifests/kube-apiserver.yaml