zoukankan      html  css  js  c++  java
  • k8s学习笔记之六:flannel网络配置

    一、overlay网络

    1、容器网段独立,不存在于物理世界。

    2、container1是172.168.1.200,发包给172.168.1.201。container1发出的包首先默认网关到所在node1,这一步操作是很常规的。

    3、包进入node1后,经过netfilters入包流程,判定匹配路由规则:

    172.168.1.201/32 via 192.168.2.101 dev tun0

    这条规则的特殊之处在于,tun0是一个隧道设备,这条规则中的via将会指导tun0将流入的包进行2层封装IP头,将实际目标IP地址设置为192.168.2.101,源地址也将改为192.168.2.100。

    4、原先的IP包作为payload封装在新的IP头内,因为新的目标IP地址和源地址都是物理世界IP,可以经过任意网络结构传输。node2收到包后,会自动拆去IP封装得到payload中的原始IP包,然后经过netfilters判断路由后,将法网container2 IP的包送入容器的虚拟网卡

    二、flannel的配置文件的目录

    Ⅰ、指定pod的网段  kubeadm init --pod-network-cidr=10.244.0.0/16

    Ⅱ、subnet.env文件目录  /run/flannel

    [root@k8s-master flannel]# cat subnet.env 
    FLANNEL_NETWORK=10.244.0.0/16
    FLANNEL_SUBNET=172.100.0.1/24
    FLANNEL_MTU=1450
    FLANNEL_IPMASQ=true

    三、flannel的原理

    1、Flannel为每个host分配一个subnet,容器从这个subnet中分配IP,这些IP可以在host间路由,容器间无需使用nat和端口映射即可实现跨主机通信

    2、每个subnet都是从一个更大的IP池中划分的,flannel会在每个主机上运行一个叫flanneld的agent,其职责就是从池子中分配subnet

    3、建立一个覆盖网络(overlay network),通过这个覆盖网络,将数据包原封不动的传递到目标容器Flannel使用etcd存放网络配置、已分配

         的subnet、host的IP等信息

    4、Flannel数据包在主机间转发是由backend实现的,目前已经支持UDP、VxLAN、host-gw、AWS VPC和GCE路由等多种backend

    四、flannel的架构图

  • 相关阅读:
    DataNucleus Access Platform 3.2 M2 发布
    dnsjava 2.1.4 发布,Java 的 DNS 解析包
    deltasql 1.5.5 发布,数据库模型版本控制
    Mezzanine 1.3 和 Cartridge 0.7 发布!
    Spring Framework 3.2 GA版发布,Spring MVC焕然一新
    Filemonitor 2.2.0 发布,文件监控工具
    Rudiments 0.40 发布,C++ 常用工具包
    脚本编程语言 Felix
    JRuby 1.7.2 发布
    OfficeFloor 2.7.0 发布,IoC 框架
  • 原文地址:https://www.cnblogs.com/wuchangblog/p/13358505.html
Copyright © 2011-2022 走看看