Flannel

Flannel 是由 CoreOS 维护的一个虚拟网络方案。这个方案经过精心测试,完全可用于生产环境,它也是最容易设置的。

使用Flannel ,添加一台新机器到集群时,Flannel 做了三件事:

  1. 使用 etcd 为新增机器分配一个子网
  2. 在宿主机上创建一个虚拟桥接接口(名为 docker0 的桥接器)
  3. 设置一个网络转发后端
    • aws-vpc:在 Amazon AWS 实例表中注册新增机器子网。该实例表最多支持 50 项记录,这意味着,如果你使用 flannel + aws-vpc 方案,集群最多只能包含 50 台机器,集群也只能运行在 AWS 云平台。
    • host-gw:通过远程机器 IP ,创建到子网的 IP 路由。这要求运行 flannel 的不同主机在二层直接互通。
    • vxlan:创建一个虚拟的 VXLAN 接口


由于 flannel 使用桥接接口转发网络包,从一个容器发往另一个容器的网络包将历经两个网络栈。

添加flannel网络配置信息到Etcd集群:

etcdctl --endpoints=https://172.17.213.60:2379 \
        --cert-file=/etc/kubernetes/ssl/etcd.pem \
        --ca-file=/etc/kubernetes/ssl/ca.pem \
        --key-file=/etc/kubernetes/ssl/etcd-key.pem \
        set /flannel/network/config \ '{"Network":"10.254.64.0/18","SubnetLen":24,"Backend":{"Type":"vxlan"}}'
  • Network:用于指定Flannel地址池
  • SubnetLen:用于指定分配给单个宿主机的docker0的ip段的子网掩码的长度
  • SubnetMin:用于指定最小能够分配的ip段
  • SudbnetMax:用于指定最大能够分配的ip段,"SubnetMin": "10.0.1.0","SubnetMax": "10.0.20.0",表示每个宿主机可以分配一个24位掩码长度的子网,可以分配的子网从10.0.1.0/24到10.0.20.0/24,也就意味着在这个网段中,最多只能有20台宿主机
  • Backend:用于指定数据包以什么方式转发,默认为udp模式,host-gw模式性能最好,但不能跨宿主机网络

Flannel启动过程解析:

  • 从etcd中获取network的配置信息
  • 划分subnet,并在etcd中进行注册
  • 将子网信息记录到/run/flannel/subnet.env中

验证Flannel网络

查看etcd中的数据:

# etcdctl ls /flannel/network/config


猜你喜欢

转载自www.cnblogs.com/wjoyxt/p/9970837.html