k8s的网络类型

一、 k8s的通信模式

1、 pod内部的容器与容器之间的通信

在同一个pod中的容器共享网络、共享网络,使用同一个网络命名空间,可以直接通信(像本地通信一样)

2、同一个node节点内不同pod之间的通信

每一个pod都有一个全局的真实的IP地址,同一个node节点中的不同pod之间,可以直接使用对方pod的IP地址进行通信,pod之间是通过docker0的网桥进行通信的

3、 不同node节点上的pod的通信 【核心】

二、cni插件

1、定义

cni插件是一个标准接口,用于容器运行时调用网络插件,配置容器网络,负责设置容器的网络命名空间和IP地址以及路由等一系列参数

2、网络插件(组件)

(1)flannel插件

1)作用

让集群中不同节点的docker容器具有整个集群唯一的虚拟IP地址

overlay网络:在底层物理网络的基础上创建一个逻辑的网络层(二层+三层的集合,二层是物理网络,三层是逻辑上的网络层)。overlay网络也是一种网络虚拟化的技术

2)模式

UDP模式: 默认模式,基于应用层用户态转发,配置简单,但性能最差(一般不用)

工作原理

(flannel提供路由表,封装以及解封装数据包,经过多次转发,所以性能较差)

基于应用转发,flannel提供路由表,flannel封装数据包以及解封装,每个node节点都有一个flannel虚拟网卡(flnanel.0),负责封装和解封装

数据流向

vxlan模式: 基于内核转发,适用于小集群(最常用)【面试题】

使用的是overlay的虚拟隧道通信技术,二层+三层的模式

工作原理

(根据VNI+IP地址找到目标节点的通信地址)

flannel提供路由表,内核封装以及解封装,每个node节点都有一个flannel虚拟网卡(flnanel.1)

数据流向

VTEP:识别对应的VNI的IP地址

host-gw模式: 配置麻烦,性能最好(很少用)

总结:flannel每个发向容器的数据包进行封装,vxlan通过vtep打包数据,由内核封装数据包再转发到目标的node节点,到目标Node节点后,由内核解封装再发送到目标pod,对性能有一定影响

(2) Calico插件

1)定义

采用直接路由(BGP动态路由)的方式,不需要修改报文,统一直接通过路由表转发,路由表会很复杂,对运行维护的要求较高

2)BGP模式的特点

交换路由信息的外部网关协议,可以连接不同的node节点,node节点可能不是同一个网段,BGP实现可靠的、最佳的、动态的路由选择,配置完成后会自动识别相邻的路由设备

注:Calico不适用overlay,也不需要交换,直接通过虚拟路由实现,每一台虚拟路由都通过BGP转发

3) 核心组件

****①felix:****运行在主机上的一个个pod(进程),用k8s daemonset(后台部署)的方式部署pod,负责在宿主机上插入路由规则,维护Calico所需的网络设备,比如网络接口的管理、监听、转发路由等

daemonset:在每一个节点部署相同的pod,并且后台运行

****②BGP Client(bird):****BGP的客户端,专门负责在集群中分发路由规则的信息,每一个节点都会有一个bird。通过BGP协议以广播的方式通知其他节点,分发路由的规则,实现网络互通

ETCD在这里的作用:

保存路由信息

负责网络元数据的一致性,保证整个网络状态的一致和准确

4) 工作原理

通过路由表进行不同节点的pod之间的通信

一旦创建好pod后,veth pair路由设备会添加一个网卡设备cali

虚拟网卡:veth pair设备是一对设备,虚拟的以太网设备,一头连接容器的网络命名空间eth0,另一头连接宿主机的网络命名空间cali

依靠veth pair设备进行IP地址分配,veth pair连接容器的部分给容器分配一个IP地址,这个IP地址是唯一标识,宿主机也会被veth pair分配一个Calico网络的内部IP地址,这个IP地址和其他节点上的容器进行通信

数据流向

有veth pair设备后,容器发出的IP地址通过veth pair设备到宿主机,宿主机根据路由规则的下一跳地址发送到网关(目标节点),数据包到达目标宿主机后,通过veth pair设备,目标宿主机根据路由规则的下一跳地址转发到目标容器

在ipip模式中,会生成一个tunnel隧道,所有的数据包封装都在tunnel中完成,封装的信息有:宿主机的IP地址,容器内部的IP地址

总结【背】

常用的网络插件有两个flannel和calico

flannel配置简单,功能简单,基于overlay叠加网络实现,在物理层的网络再封装一个虚拟网络

vxlan是虚拟三层网络,最常用,基于vni+ip进行转发,flannel提供路由表,内核封装和解封装,但封装和解封装对数据传输的性能会有影响,同时不具备网络策略配置的能力,这个能力基于UDP协议,默认网段是10.244.0.0/16

udp是默认模式,一般在测试环境中用

host-gw不用

calico功能强大,基于路由表进行转发,没有封装和解封装的过程,对性能影响较小,具备网络策略配置的能力,但是每生成一个pod就会生成一个路由表,维护起来比较复杂,降低转发效率

模式:ipip模式、BGP模式

BGP模式是通过维护IP路由表的前缀来实现目标主机的可达性

对比IPIP模式,BGP模式没有隧道,BGP模式下,pod的数据包直接通过网卡发送到目标主机

ipip模式有隧道,在隧道中进行数据包的封装 ipv4 in ipv4

简单的小集群,使用flannel,考虑到以后扩容以及配置网络策略,可以使用calico

三、coredns

****定义:****可以为集群中的service资源创建一个域名和IP地址进行对应解析的关系

service是对外提供访问的地址,加入DNS机制后可以直接访问服务名

相关推荐
Hacker_Nightrain9 分钟前
网络安全CTF比赛规则
网络·安全·web安全
网络安全指导员1 小时前
恶意PDF文档分析记录
网络·安全·web安全·pdf
co0t2 小时前
计算机网络(11)和流量控制补充
服务器·网络·计算机网络
白总Server2 小时前
JVM解说
网络·jvm·物联网·安全·web安全·架构·数据库架构
清尘沐歌2 小时前
有什么好用的 WebSocket 调试工具吗?
网络·websocket·网络协议
ggaofeng2 小时前
通过命令学习k8s
云原生·容器·kubernetes
Li_0304062 小时前
Java第十四天(实训学习整理资料(十三)Java网络编程)
java·网络·笔记·学习·计算机网络
death bell2 小时前
Docker基础概念
运维·docker·容器
Tony聊跨境3 小时前
什么是 ISP:了解互联网服务提供商的作用
网络·人工智能·isp
earthzhang20213 小时前
《深入浅出HTTPS》读书笔记(7):安全的密码学Hash算法
网络·网络协议·http·https·1024程序员节