kubernetes網絡管理

kubernetes 網絡通信

1、 容器間通信:同一個Pod內的多個容器間的通信,lo迴環網口
2、 Pod通信:Pod IP <-->Pod IP
3、 Pod 與Service通信:PodIP<-->ClusterIP kube-Porxy
4、 Service與集羣外部客戶端的通信:

CNI:CNI是Container Network Interface的縮寫,它是一個通用的容器網絡插件的k8s網絡接口
flannel: (在每一個集羣節點上面都得安裝flannet,kubeadm安裝情況下flanne爲Daemoset)
flannel2.0 已繼承了calico BGP
配置文件:
[root@Master ~]# cat /etc/cni/net.d/10-flannel.conflist

{
  "name": "cbr0",
  "cniVersion": "0.3.1",
  "plugins": [
    {
      "type": "flannel",
      "delegate": {
        "hairpinMode": true,
        "isDefaultGateway": true
      }
    },
    {
      "type": "portmap",
      "capabilities": {
        "portMappings": true
      }
    }
  ]
}

支持多種後端傳輸的方式:
VXlan 擴展的虛擬局域網,

  1. vxlan
  2. Directrouting vxlan
    host-gw:Host GatWay 容易造成路由表特別大,容易廣播風暴,要求集羣節點在同一個網段
    vxlan+host-gw:兩種方式結合使用,同網段使用host-gw,不同網段降級爲vxlan

vim kube-flannel.yml 添加直接路由模式

  net-conf.json: |
    {
      "Network": "10.244.0.0/16",
      "Backend": {
        "Type": "vxlan",
        " Directrouting": true
      }
    }

UDP:性能比較差,不推薦使用,很早版本前不兼容vxlan方式時,使用UDP
flannel的配置參數:
Network:flannel使用的是CIDR格式的網絡地址,用於爲Pod配置網絡功能
默認使用#也可以使用掩碼爲8的網段。
10.244.0.0/16
master:10.244.0.0/24
node01:10.244.1.0/24
……
node255:10.244.255.0/24
SubetLen:把Network切分子網供各節點使用時,使用多長的掩碼進行切分,默認爲24位;
SubetMin:10.244.10.0/24 最小分配子網網段使用
SubetMax:10.244.100.0/24
Backend:vxlan ,host-gw , upd

calico:BGP 自動路由發現協議 默認192.168.0.0/16網段 不支持ipvs模式,只能使用iptables模式,每一臺node節點都得部署calico
ingress:進棧
egress:出棧
如果定義僅ingress,egress默認允許,ingress拒絕所有,如果想放行指定pod或者是名稱空間,可在定義network-policy ingress規則
canel
kube-router

解決方案:
虛擬網橋:純軟件的方式實現一個虛擬網絡
多路複用:MacVLAN 根據物理節點的macvlan進行通信
硬件交換:SR-IOV 一個網卡可以虛擬出多個接口

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章