K8S网络类型

k8s的网络类型

k8s的通信模式

|---|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 | pod内部之间容器与容器之间的通信,在同一个pod中容器是共享资源和网络,使用同一个网络命名空间,可以直接通信 |
| 2 | 同一个node节点之内,不同pod之间的通信,每个pod都有一个全局的真实ip地址,同一个node之间的不同pod可以直接使用对方pod的ip地址进行通信,pod1和pod2是通过docker0的网桥来进行通信 |
| 3 | 不同node节点上的pod之间如何通信,cni的插件:cni是一个标准接口,用于容器运行时调用网络插件,配置容器网络,负责设置容器的网络命名空间,IP地址,路由等等参数 Flannel插件:功能就是让集群之中不同节点的docker容器具有全集群唯一的虚拟ai地址,他是一个overlay网络,在底层物理网络的基础之上,创建一个逻辑的网络层,准确的说它是二层加三层的集合,二层是物理网络,三层是逻辑上的网络层,overlay网络也是一种网络虚拟化的技术 |

Flannel支持的数据转发方式

|---|---------------------------------------------------------------|
| 1 | UDP模式,默认模式,应用准发,配置简单,但是性能最差 |
| 2 | Vxlan,基于内核转发,也是最常用的网络类型(小集群都是用这个) |
| 3 | Host-gw(性能最好,但是配置麻烦) |
| | UDP:基于应用转发,flannel提供路由表,fannel封装数据包,解封装 Node都会有一个flannel的虚拟网卡 |

|-----------------------------------------------------------------------------------------|
| Vxlan:使用的就是overlay的虚拟隧道通信技术,二层+三层模式 Udp基于应用层,用户 Vxlan:flannel提供路由表,内核封装解封装 Flannel1.1接口 |

Calico插件

|-----------------------------------------------------------------------------------------------------|
| Flannel:每个发向容器的数据包进行封装,vxlan通过vtep打包数据,由内核封装成数据包再转发到目标node节点,到了目标节点,还有一个解封装的过程,再发送到目标pod,性能是有一定的影响。 |

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Calico:采用直接路由的方式:BGP方式路由,它不需要修改报文,统一直接通过路由表换发,路由表会相当复杂,运行维护的要求比较高 BGP模式的特点:交换路由信息的外部网关协议,可以连接不同的node节点,node节点可能不是一个网段,BGP会自动寻址,自动选择可靠的路径,BGP实现可靠的,最佳的,而且是动态的路由选择,自动识别相邻的路由设备 Calico不使用overlay,也不需要交换,直接通过虚拟路由实现,每一台虚拟路由都通过BGP转发 |

核心组件

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Felix:也是运行在主机的一个pod,一个进程,k8s,daemonset的方式部署的pod Daemont set 会在每个node节点部署相同的pod,后台的运行方式 负责宿主机上插入路由规则,维护calico需要的网络设备,网络接口的管理,监听,路由等等。BGP Client: bird BGP的客户端,专门负责在集群中分发路由规则的信息,每一个节点都会有一个BGP Client、 BGP协议广播的方式通知其他节点的,分发路由的规则,实现网络互通 Etcd:保存路由信息,负责网络元数据的一致性,元数据是保证网络状态的一致性和准确性 |

Calico的工作原理

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 路由表来维护每个pod之间的通信 创建好pod之后,会添加一个设备cali veth pair设备,在ifconfig中看到的也是一个虚拟网卡 虚拟网卡:veth pair是一对设备,虚拟的以太网设备,有两头,一头连接在容器的网络命名空间一般叫做eth0,另一头连接宿主机的网络命名空间也就是cali IP地址分配:veth pair连接容器的部分给容器分配一个ip地址,这个ip地址是唯一标识,宿主机也会被veth pair分配一个calico的内部网络ip地址,和其他节点上的容器进行通信 Veth设备,容器发出的ip地址通过veth pair设备到宿主机,宿主机根据路由规则的下一跳地址,发送到网关(目标宿主机,) 数据包到达目标宿主机,veth pari设备 目标宿主机也是根据路由规则,下一跳地址 |

|-----------------------------------------------------------------------------|
| 根据路由规则转发由BGP发现 在ipip模式:会生产一个tunnel(隧道),所有的数据包都在tunnel内部打包,封装:宿主机ip容器内部的ip地址 |

Flannel和calico区别

|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Flannel | Flannel:配置简单,功能简单,基于overlay叠加网络实现,在屋里层的网络在封装一个虚拟的网络 Vxlan是虚拟三层网络 Udp是默认模式 Vxlan是默认用的最多的模式,基于vni+ip进行转发,flannel提供路由表,内核封装和解封装,由于封装和解封装的过程,对数据传输的性能会有影响,没有网络策略配置的能力UDP(协议,只管发) 默认网段10.244.0.0/16 Host-gw |
| Calico | Calico:功能强大,基于路由表进行转发,没有封装和解封装的过程,具备网络策略的配置能力,但是路由表维护起来复杂 有两个模式:ipip BGP BGP:模式通过ip路由表的前缀来实现目标主机的可达性, 特点:对比ipip模式,BGP模式没有隧道,BGP模式下,POD的数据包直接通过网卡发送到目标主机也就是目的地 Ipip的隧道:隧道进行数据包的封装ipv4---ipv4. 简单的小集群:flannel 涉及到扩容,配置网络策略:calico |

|-------------------------------------------------------------------------------------------------------------------------------|
| Coredns 可以为集群当中的service资源创建一个域名和ip进行映射的关系 Service是对外提供访问的地址,现在我们加入DNS机制之后,可以直接访问他的服务名 Dashboard 仪表盘,kubenetes的可视化界面,在这个可视化界面上 |

相关推荐
Plastic garden2 分钟前
K8s介绍(1)
云原生·容器·kubernetes
江华森3 分钟前
《网络架构实战:从单机到云原生的全栈思考》博客系列
网络·云原生·架构
小肥君9 小时前
docker无法连接GPU资源解决方案
docker·容器·eureka
liux352810 小时前
K8s存储卷全解析:PV/PVC/StorageClass 关系
kubernetes
江华森12 小时前
从零搭建 Kubernetes 集群并部署 Kuboard v3 管理面板 —— 国内环境完整实战教程
容器·kubernetes
友莘居士14 小时前
KingbaseES Docker速查表
运维·docker·容器
小肥君15 小时前
docker镜像配置
运维·docker·容器
某林21216 小时前
Isaac Lab (v2.3.2) Docker 本地化部署与底层排障全解析
运维·docker·容器·架构·iassc
iDao技术魔方19 小时前
WSL 配 GPU 用 Docker 的折腾指南(2026 年版)
运维·docker·容器