• 宝爷
    2019-02-16
    这里使用UDP,不需要可靠,因为可靠性不是这一层需要考虑的事情,这一层需要考虑的事情就是把这个包发送到目标地址。如果出现了UDP丢包的情况,也完全没有关系,这里UDP包裹的是我们真正的数据包,如果我们上层使用的是TCP协议,而Flannel使用UDP包裹了我们的数据包,当出现丢包了,TCP的确认机制会发现这个丢包而重传,从而保证可靠。
    
     42
  • 虎虎❤️
    2018-11-08
    我又思考了一下,二层网络可能无法连通。因为flannel网络中,node上的fdb是靠配置而非学习得到。当node1上的容器1想要通过mac地址直连node2上的容器2时,由于node1中的fdb中没有配置容器2的mac地址相关记录,所以flannel.1无法找到VTEP出口的ip。故而二层网络没有连通性。

    如果想要有连通性,需要配置VTEP为学习模式,并且把所有的VTEP加入一个分组中。这样在fdb表中查询不到mac地址时,vxlan在VTEP组中发起广播(或者组播?这个概念我有点混淆)。VTEP也可作为一个网桥设备,继续向docker0,进而目的node上的所有容器广播。正确的目的地址会响应请求,而且刚才途经的设备fdb都学习到了源容器的mac 地址映射,所以响应数据可以顺利返回源容器。这样就完成了二层网络的连通。
    展开
     1
     7
  • 阿鹏
    2018-11-07
    我看很多文章都推荐calico,老师觉得呢
    
     6
  • Maiza
    2018-11-07
    分分钟变成了计算机网络课程 😄
    
     5
  • 广宇
    2019-02-23
    抓包分析了下,确实如老师所描述,外部数据帧的源和目的MAC地址分别为宿主机网卡的MAC地址,外部IP头的源和目的地址分别为宿主机的IP地址,内部数据帧中的源和目的MAC地址分别为VTEP设备的MAC地址,内部IP头的源和目的地址分别为容器的IP地址。但是有个问题,做了个测试,在容器里面arping另一个宿主机上的容器地址,却得不到回应,这是为什么?广播地址不会被封装出去吗?
     4
     4
  • 凌
    2019-01-18
    flannel进程负责子网->VTEP mac,VTEP mac->节点ip(fdb)的维护,为什么不直接维护子网->节点ip表更直接,中间的二层网络感觉多此一举的
     1
     3
  • kissingers
    2018-11-16
    看了好久终于明白一点,vxlan模式下,flanneld 干了好多话,添加了去往目的容器的下一条地址即peer VTEP,还添加了对应的mac来封装innter frame, 再添加了去往peer VTEP的host ip。感觉是个大管家呀,怎么做到的? 需要事前配置还是建立时注册到一个什么地方?
    另外gateway 不太会是10.1.16.0吧,应该10.1.16.1 。
    
     3
  • jssfy
    2018-11-26
    请问bridge fdb看到的其它节点vtep的对应关系vtep是各节点主动注册的?

    作者回复: 主机上的agent要负责维护这些信息

    
     2
  • 勤劳的小胖子-libo
    2018-11-12
    Flannel中的UDP需要Etcd来维护相关的子网与宿主机的对应关系,在VxLan中也需要Etcd吗?老师,什么时候可以讲下Etcd在k8s中的原理与应用?

    作者回复: 现在它们都不依赖etcd,直接连apiserver

    
     2
  • 继富
    2018-11-12
    为什么要使用UDP呢,UDP不是不可靠的吗

    作者回复: 好问题。你可以想想,这里是不是需要“可靠”呢?

     1
     2
  • Eurica
    2018-11-07
    文中所述“container-1里的进程发起的IP包,根据默认路由规则,通过容器的网关进入docker0网桥,从而出现在宿主机上。”请问老师“容器的网关”是谁?
     1
     2
  • xianhai
    2018-11-07
    etcdctl ls 这个命令不存在啊。
    我是用这个命令安装etcdctl的:go get github.com/coreos/etcd/cmd/etcdctl

    极客时间版权所有: https://time.geekbang.org/column/article/65287
    
     2
  • 俊釆
    2019-09-23
    读了至少6遍了,每次都有新的收获,感谢磊哥给力的分享。
    
     1
  • iGeneral
    2019-07-16
    想起来原来做毕业设计的时候,跨主机直接容器的通信好像直接用的etcd服务发现,直接吧docker的网络暴露出去,然后依赖etcd来做的跨主机通信。 其实还可以
    
     1
  • 坤
    2019-06-20
    好深的功底
    
     1
  • 彦
    2019-03-07
    请问,某个节点上flannel进程启动后,会发送相关状态到其他节点---那么,这个共享的配置信息是不是经过Etcd处理的?FDB这个转发数据库是不是也是在这个时机形成的? 这样 在打上外层标签时就这直接从内核态进行操作,从而效率比较高。
    
     1
  • 周娄子
    2018-11-28
    container veth设备都是attach在bridge上的, 应该无法保证二层网络(MAC 地址)的连通性
    
     1
  • maomaostyle
    2018-11-21
    请问为什么vxlan一定要使用udp建立连接呢?
    
     1
  • blackpiglet
    2018-11-10
    思考题:Flannel 能负责保证二层网络(MAC 地址)的连通性吗?

    回答:我觉得不能,Flannel 的工作模式都是根据 IP 来判断下一条跳转到哪个网络设备上,是基于三层做路由。如果要基于 MAC 做寻址的话,Flannel 无法知道其他主机上的容器的 MAC 地址,所以无法转发。
    
     1
  • 艾斯Z艾穆
    2018-11-08
    您好,我遇到一个问题
    我在一个被service选中的app里访问不了这个service的port可以ping通,用pod的ip可以访问到端口
    别的pod可以访问到service的port
    这个pod也可以访问别的service的port
    kube-proxy用的模式是ipvs

    作者回复: 看service部分讲解

    
     1
我们在线,来聊聊吧