flannel

来源:互联网 发布:java难点 编辑:程序博客网 时间:2024/05/21 06:26

Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。

在Kubernetes的网络模型中,假设了每个物理节点应该具备一段“属于同一个内网IP段内”的“专用的子网IP”

Flannel的设计目的就是为集群中的所有节点重新规划IP地址的使用规则,从而使得不同节点上的容器能够获得“同属一个内网”且”不重复的”IP地址,并让属于不同节点上的容器能够直接通过内网IP通信。

flannel 支持多种 backend,有vxlan和host-gw。

etcdctl set /flannel/network/config ‘ ’
不写backend是默认是vxlan

{ "Network": "10.2.0.0/16", "SubnetLen": 24}

这样写是host-gw

{ "Network": "10.2.0.0/16", "SubnetLen": 24, "Backend": {   "Type": "host-gw" }}

host-gw 把每个主机都配置成网关,主机知道其他主机的 subnet 和转发地址。
vxlan 则在主机间建立隧道,不同主机的容器都在一个大的网段内。
由于 vxlan 需要对数据进行额外打包和拆包,性能会稍逊于 host-gw。

docker启动时使用注意其中的“–bip=$FLANNEL_SUBNET”这个参数,它限制了所在节点容器获得的IP范围。

这个IP范围是由Flannel自动分配的,由Flannel通过保存在Etcd服务中的记录确保它们不会重复。

flannel
1、启动etcd
2、启动flanneld
3、使用flannel参数(/run/flannel/subnet.env)启动dockerd

原创粉丝点击