???在同一个pod中的容器共享资源和网络,使用同一个网络命名空间。可以直接通信的。
???每一个pod都有一个全局的真实的IP地址,同一个node直接的不同pod可以直接使用对方pod的IP地址进行通信。
Pod1 和pod2 是通过docker0的网桥来进行通信。
Cni的插件:
cni是一个标准接口,用于容器运行时调用网络插件,配置容器网络,负责设置容器的网络命名空间,IP地址,路由等等参数。
???Fiannel插件:功能就是让集群之中不同节点的docker容器具有全集群唯一的虚拟ip地址。
???overlay网络:在底层物理网络的基础上,创建第一个逻辑的网络层,二层+三层的集合 二层是物理网络。三层是逻辑上的网络层。
???overlay网络也是一种网络虚拟化的技术。
???Udp:基于应用转发,flannel提供路由表,flannel封装数据包,解封装
??Node都会有一个flannel的虚拟网卡。?基于应用层,用户
Vxlan:使用的就是overlay的虚拟隧道通信技术。二层加三层的模式。
???????Vxlan:flannel提供路由表,内核封装解封装。
Flannel1.1接口用的vxlan。
每个发向容器的数据包进行封装,vxlan通过vtep打包数据,由内核封装数据包---->转发到目标node节点。到达目标节点,还有一个解分装的过程,再发送目标pod.性那能是有一定的影响。
采用直接路由的方式。BGP路由。不需要修改报文,统一直接通过路由表转发路由表会很复杂,运行维护的要求比价高。
BGP模式的特点:交换路由信息的外部网关协议,可以链接不同放入节点,node节点可能不是一个网段,BGP实现可靠的,最佳的,动态的路由选择。自动识别相邻的路由设备。
Calico不使用overlay,也不需要交换,直接通过虚拟路由实现。每一台虚拟路由都通过BGP转发。
Felix:也是运行在主机的一个个pod,一个进程,k8s ?daemonset的方式部署的pod
Daemont set 会在每个node节点部署相同的pod,后台的运行方式。
负载宿主机上插入路由规则,维护calico需要的网络设备。网络接口管理,监听。路由等等。
BGP client:bird BGP客户端,专门负责在集群中分发路由规则的信息。每一个节点都会有一个BGP client。
BGP协议广播方式通知其他节点,分发路由的规则,实现网络互通。
Etcd:保存路由信息,负责网络元数据的一致性,保证网络状态的一致性和准确。
路由表来维护每个pod之间的通信。
创建好pod之后,添加一个设备calico ?veth pair设备。
虚拟网卡:veth pair是一对设备,虚拟的以太网设备。
一头连接在容器的网络命名空间,
另一头链接宿主机的网络命名空间 ?calico
IP地址分配:veth pair连接容器的部分给容器分配一个IP地址,这个IP地址是唯一标识,宿主机也会被 veth pair分配calico网络的内部IP地址。和其他节点上的容器进行通信。
Veth设备,容器发出的IP地址通过veth pair设备到宿主机,宿主机根据路由规则的下一跳地址发送到网关(目标宿主机)
数据包到达目标宿主机,veth pair 设备,目标宿主机也是根据路由规则,下一跳地址,转发到目标容器。
在ipip模式:会形成一个tunnel隧道。数据包封装都在tunnel隧道内部打包。封装:宿主机IP 容器内部的IP地址。
Flannel:配置简单,功能简单,基于overlay叠加网络实现。在物理层的网络在封装一个虚拟的网络
Vxlan是虚拟三层网络
Udp是默认模式
Vxlan最多的模式 vni + ip 进行转发,flannel提供路由表,内核封装解封装
host-gw
由于封装和解封装的过程,对数据传输的性能会有影响,没有网络策略配置的功能udp(协议) 默认网段:10.244.0.0/16
Calico:功能强大,基于路由表进行转发,没有解封装和封装的过程。具备网络策略的配置能力,但是路由表维护起来复杂。 ?
模式:ipip ??BGP
BGP:通过ip 路由表的前缀来实现目标主机的可达性。
对比ipip模式。BGP模式没有隧道,BGP模式下,pod的数据包直接通过网卡发送到目的地。
Ipip的隧道:隧道进行数据包的封装IPV4----IPV4.
简单的小集群:flannel
扩容,配置网络策略:calico