kubernetes配置网络插件flannel

kuberbetes网络通信:

  • 容器间通信: 同一个pod内的多个容器通信 --- lo
  • Pod间通信: Pod IP ---> Pod IP
  • Pod与Service通信: Pod IP ---> ClusterIP
  • Service与集群外部客户端通信:

常用CNI(container network 插件):

  • flannel   ---不支持网络策略
  • calico    ---支持地址分配和网络策略
  • canel     --- flannel+calico
  • kube-router...

解决方案:

  • 虚拟网桥
  • 多路复用: Mac-VLAN
  • 硬件交换:SR-IOV

网络配置文件: /etc/cni/net.d/

Flannel支持多种后端:

  • VxLAN:    在node上起一个flannel.0或者flannel.1的隧道端口,通过隧道传输实现不同node间pod的通信。 会封装以下守护:  以太网+ip+udp+vxlan,开销比较大
    • vxlan    叠加网络或者隧道网络,通过封装网络报文的方式使不同网段的pod之间可以通讯,默认情况下flannel使用VxLAN模式
    • Directrouting    直接使用主机的IP地作为网关,通过主机路由的方式与目标pod进行通讯,当目标pod与当前pod不在同一三层网络内,会自动降级为VxLAN模式
  • Host-gw:    Host Gateway --- Pod把数据报文发给虚拟网口,查本地路由表,不是本地的ip,则由本机的物理网卡传给对端的物理网卡,对端再解析到自己的内部网络。 仅使用本地路由,开销较小;与VxLAN的Directrouting模式相同,当目标pod与当前pod不在同一三层网络内时,pod之间无法通讯
  • UDP:    最早期的通信模式,性能非常差

Flannel的配置参数:

  获取flannel配置信息: kubectl get configmap/kube-flannel-cfg -n kube-system -o yaml

  Network: flannel使用的CIRD格式的网络地址,用于为pod配置网络功能:

       10.244.0.0./16  ->

            master:  10.244.0.0/24

         node1: 10.244.1.0/24

         node2: 10.244.2.0/24

         ....

         node255: 10.244.255.0/24 

  SubnetLen: 把Network切分子网供各节点使用时,使用多长的掩码进行切分,默认为24位

  SubnetMin:地址段中子网起始值

  SubnetMax:地址段中子网结束值

  Backend:vxlan/host gw/udp

♦ brctl show  xxx   可以查看xxx网口绑定情况

♦ tcpdump -i  xxx -nn     对xxx网口抓包

♦ ip route show  可以显示当前路由信息

♦ kubectl edit configmap/kube-flannel-cfg -n kube-system   直接编辑flanel配置文件来修改网络模式不会生效, 需要在安装flanne初始化的时候就编辑好配置文件,修改flannel插件配置文件的“net-conf.json”下backend的网络模型

 

posted @ 2019-08-05 14:52  阿拉米苏  阅读(1364)  评论(0编辑  收藏  举报