cni
目前的版本,只支持 flannel/calico/multus,后面的开发计划中,会引入更多的 CNI 插件的选择。
DOK 中部署 flannel 是通过在 master0 节点上执行 kubectl apply -f fannel.yaml
类似的命令来完成的。
CNI 的不同类型的异同如下:
- Overlay: 靠隧道打通,不依赖底层网络
- 路由: 靠路由打通,部分依赖底层网络
- Underlay: 靠底层网络打通,强依赖底层网络
请参考 Flannel 的章节。
- calico目前只支持TCP、UDP、ICMP、ICMPv6协议,如果使用其他四层协议(例如NetBIOS协议),建议使用weave、原生overlay等其他overlay网络实现。
- 基于三层实现通信,在二层上没有任何加密包装,因此只能在私有的可靠网络上使用。
- 流量隔离基于iptables实现,并且从etcd中获取需要生成的隔离规则,有一些性能上的隐患。
kube-ovn 的安装脚本已经内置到 DOK 的安装包中,用户可以创建不带 CNI 的集群之后,手动安装,或者在创建集群的时候通过指定 --cni
指定安装 kube-ovn 作为网络插件。
如果在第一次安装集群的时候没有主动选择网络插件,flannel 会是默认的 CNI,如果希望在集群创建之后,再安装多网卡的网络插件 multus,可以用下面的方法进行,更详细的 multus 的测试,可以参考 multus docs
# 在master0执行
kubectl -f /root/dok-release/network/multus-daemonset.yml
默认的网络插件是 flannel,如果在创建集群并且部署了应用之后要修改网络插件,是有一定风险的。