k8s网络,跨主机容器通信机制(没看懂)
容器跨主机网络的两种实现方法:UDP和VXLAN
就是发现目的的IP包在路由规则上(ip route)中定位到了一个Tunnel类型的设备。
TUN设备的功能非常简单,即:在操作系统内核和用户应用程序之间传递IP包。
宿主机与子网的关系,保存在etcd中。
我们在进行系统级编程的时候,有一个非常重要的优化原则,就是要减少用户态到内核态的切换次数,并且把核心的处理逻辑都放在内核态进行。
VXLAN的覆盖网络的设计思想是:在现有的三层网络之上,“覆盖”一层虚拟的、由内核VXLAN模块负责维护的二层网络
,使得连接在这个VXLAN二层网络上的“主机”(虚拟机或者容器都可以)之间,可以像在同一个局域网(LAN)里那样自由通信
。当然,实际上,这些“主机”可能分布在不同的宿主机上,甚至是分布在不同的物理机房里。
UDP包是一个四层数据包
容器与容器之间要“通”,容器与宿主机之间也要“通”。并且,Kubernetes要求这个“通”,还必须是直接基于容器和宿主机的IP地址来进行的
每有十分看明白