二進制部署flannel插件,沒有部署cni插件,需要在flannel配置文件指定生成docker網段,然後在docker.service中指定預定義網段,這樣docker0會和flannel處於同一個網段,flanneld會在etcd中給每個node分配一個子網段,然後docker0在此子網段中分配pod ip。這樣保證不同node上的任意一個pod 其ip都不會衝突。
kubeadm部署k8s,使用yaml部署flannel網絡,已經默認安裝cni插件,cni插件的作用其實就是代替docker0的作用。所以docker0的網絡就無所謂衝突不衝突,但是cni只保證通過k8s創建的pod 網絡分配,如果docker自身創建,不會遵守此規則。