美文网首页
flannel通信方式之VXLAN

flannel通信方式之VXLAN

作者: BlueBlueSummer | 来源:发表于2019-07-24 17:43 被阅读0次

    背景

    如果根据《K8S集群搭建——基于CentOS 7系统》配置flannel,那么backend通信方式默认为UDP。这里就有一个问题,通过UDP方式,数据包的转发是在用户态,因此性能上会有损失,假如数据包的转发能在内核完成,这样就能少一次数据报文的拷贝,性能也就能上去,这就是VXLAN通信方式。

    配置vxlan backend

    1、master节点

    和之前类似,同样使用etcdctl命令,增加对backend的定义,指定为vxlan即可,

    etcdctl set /flannel/network/config '{"Network":"10.108.0.0/16","Backend": {"Type": "vxlan"}}'

    这里我们设置flannel子网使用10.108网段。

    设置完网络配置后,重启flanneld服务即可,同时因为docker依赖于flannel网络,因此docker也需要重启,但是要放到后面,

    systemctl restart flanneld docker

    两者执行内容大致如下:

    - flannel从etcd数据库中获取network的配置信息

    - flannel划分子网subnet,并在etcd中进行注册

    - flannel将子网信息记录到/run/flannel/subnet.env中

    - docker启动时加载subnet.env中的网络配置

    因此,服务重启后我们就能看到flannel.1这个网络设备,以及docker0网桥的ip已经处于我们配置的网段中。

    [root@CentOS-7-4 ~]# ifconfig

    docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500

            inet 10.108.14.1  netmask 255.255.255.0  broadcast 0.0.0.0

            ether 02:42:5c:a0:56:f9  txqueuelen 0  (Ethernet)

            RX packets 0  bytes 0 (0.0 B)

            RX errors 0  dropped 0  overruns 0  frame 0

            TX packets 0  bytes 0 (0.0 B)

            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450

            inet 10.108.14.0  netmask 255.255.255.255  broadcast 0.0.0.0

            inet6 fe80::1007:9aff:fe3d:2bda  prefixlen 64  scopeid 0x20<link>

            ether 12:07:9a:3d:2b:da  txqueuelen 0  (Ethernet)

            RX packets 0  bytes 0 (0.0 B)

            RX errors 0  dropped 0  overruns 0  frame 0

            TX packets 0  bytes 0 (0.0 B)

            TX errors 0  dropped 8 overruns 0  carrier 0  collisions 0

    2、node节点

    对于node节点,同样也是重启flanneld和docker进程即可,

    systemctl restart flanneld docker

    连通性测试

    分别在两个node上起一个容器,互相ping对方ip,能ping通即配置正常。

    常见问题

    1、docker0网桥设备ip不在我们设置的网段

    这一般就是没有重启docker导致的,或者没有在flannel后重启。

    2、使用etcdctl命令更新flannel子网信息,重启flannld进程,配置不生效

    CentOS 7自带的flannel可能有些问题,重启服务确实无法更新配置,需要先将flannl.1这个网络设备删除,重启后才会生效。

    ip link del flannel.1;

    systemctl restart flanneld docker

    后续使用最版本的flannel验证一下。

    相关文章

      网友评论

          本文标题:flannel通信方式之VXLAN

          本文链接:https://www.haomeiwen.com/subject/xqjfrctx.html