Dok Docs
Github Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

cni

概述

目前的版本,只支持 flannel/calico/multus,后面的开发计划中,会引入更多的 CNI 插件的选择。

部署

DOK 中部署 flannel 是通过在 master0 节点上执行 kubectl apply -f fannel.yaml 类似的命令来完成的。

CNI

CNI 的不同类型的异同如下:

  1. Overlay: 靠隧道打通,不依赖底层网络
  2. 路由: 靠路由打通,部分依赖底层网络
  3. Underlay: 靠底层网络打通,强依赖底层网络

Flannel

请参考 Flannel 的章节。

Calico

  1. calico目前只支持TCP、UDP、ICMP、ICMPv6协议,如果使用其他四层协议(例如NetBIOS协议),建议使用weave、原生overlay等其他overlay网络实现。
  2. 基于三层实现通信,在二层上没有任何加密包装,因此只能在私有的可靠网络上使用。
  3. 流量隔离基于iptables实现,并且从etcd中获取需要生成的隔离规则,有一些性能上的隐患。

kube-ovn

kube-ovn 的安装脚本已经内置到 DOK 的安装包中,用户可以创建不带 CNI 的集群之后,手动安装,或者在创建集群的时候通过指定 --cni 指定安装 kube-ovn 作为网络插件。

multus后安装

如果在第一次安装集群的时候没有主动选择网络插件,flannel 会是默认的 CNI,如果希望在集群创建之后,再安装多网卡的网络插件 multus,可以用下面的方法进行,更详细的 multus 的测试,可以参考 multus docs

# 在master0执行
kubectl -f /root/dok-release/network/multus-daemonset.yml

img.png

更换网络插件

默认的网络插件是 flannel,如果在创建集群并且部署了应用之后要修改网络插件,是有一定风险的。

参考资料