1、基础原则
每个pod都拥有一个独立的IP地址,并假定所有pod都在一个可以直接连通的,扁平的网络空间中.不管他们是否运行在同一个Node中,都要求他们可以直接通过对方的IP进行访问.
在Kubernetes中,IP是以Pod为单位进行分配的,一个pod内的所有容器共享一个网络堆栈(他们的IP,网络设备都是共享的),这样的地址模型被称作IP-per-Pod模型.
2、Docker网络基础
1、网络命名空间
处于不同命名空间的网络栈是完全隔离的,彼此之间无法通信.
2、Veth设备对
利用Veth设备对可以直接将两个网络命名空间链接起来.
3、网桥
网桥是一个二层的虚拟网络设备,把若干个网络接口链接起来,以使得网络接口之间的报文能够互相转发.
4、路由
当IP层在处理数据发送或者转发时,会使用路由表来决定发往哪里.
5、iptables和Netfilter
网络堆栈协议中有一组回调函数的挂载点,通过这些挂载点的挂接的钩子函数可以在Linux网络栈处理数据包的过程中对数据包进行一些操作,例如过滤,修改,丢弃等.整个挂载点的技术叫Netfilter和iptables.
3、Kubernetes的网络模型要求每个Node上的容器都可以相互访问.
欲了解更多文章,请关注公众号:架构师Plus