K8S flannel


kubernetes網絡通信方式有:

  1. 容器間的通信 : pod內的容器通信 通過(lo)設備
  2. Pod之間的通信 :pod IP <-----> pod IP ,K8S 要求所有的 pod 都必須直接通信
  3. Pod與Service之間的通信 :podIP <-----> ClusterIP
  4. Service與集群外部的通信 ClusterIP <-----> 集群外部

CNI插件:

  1. flannel
  2. calico
  3. canel
  4. kube-route

解決方案:

  1. 虛擬網橋
  2. 多路復用 MacVLAN
  3. 硬件交換 SR-IOV

Flannel
Flannel本身是一個框架,真正提供網絡功能是他的后端實現。目前支持三種后端實現:

  1. VXLAN
  2. host-gw
  3. UDP

查看 flannel

kubectl get ds -n kube-system -o wide

查看對應的 configmap

kubectl get configmap -n kube-system

VXLAN+DriectRouting 模式
VXLAN+DriectRouting是首先采用直接路由的方式,如果不可以就使用VXLAN的方式。
Flannel的默認配置是VXLAN,但是我們可以配置多個插件協作,接下來我們就使用VXLAN+DriectRouting這兩個插件協作。

cd ~ ; mkdir flannel 
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# 添加一個配置
vi kube-flannel.yml
...
  net-conf.json: |
    {
      "Network": "10.244.0.0/16",
      "Backend": {
        "Type": "vxlan",                     # 注意,這里有個, 逗號
        "Directrouting": true                # 啟動 Directrouting
      }
    }

# 查看 ds
kubectl  get ds -n kube-system

# 刪除重建 flannel
kubectl delete ds kube-flannel-ds-amd64 -n kube-system

kubectl  get pods -n kube-system -w
kubectl apply -f kube-flannel.yml 

# 在 node1,node2 上執行 ip route show ,這里以 node1 為例子
[root@node1 ~]# ip route show
default via 192.168.0.254 dev eth0 proto static metric 100 
10.244.0.0/24 via 192.168.0.205 dev eth0 
10.244.1.0/24 dev cni0 proto kernel scope link src 10.244.1.1 
10.244.2.0/24 via 192.168.0.207 dev eth0           # 網絡到達 node2 使用 eth0 網卡即成功 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.206 metric 100 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM