目录
5.4 vxlan 模式中 cni 和 flannel 分别是干什么的
一 k8s 有哪些网络组件
-
Flannel:Flannel是一个简单且高效的网络解决方案,用于为Kubernetes集群中的容器提供网络连接,它通过为每个节点创建一个子网,然后使用VXLAN隧道将节点之间的流量路由到正确的容器。
-
Calico:Calico是一个开源的网络解决方案,它基于BGP协议构建了一个高度可扩展的容器网络。Calico可以提供网络策略功能,允许管理员定义流量控制规则。
-
Weave Net:Weave Net是一个具有网络拓扑感知能力的软件定义网络(SDN)解决方案,它能够自动发现和管理Kubernetes集群中的网络连接。
-
Cilium:Cilium是一个用于Kubernetes集群的网络和安全解决方案,它结合了BPF(Berkeley Packet Filter)和XDP(eXpress Data Path)技术,提供高性能的网络层和安全功能。
以上列举的网络组件是Kubernetes中常见的选择,每个组件都有其特定的特点和适用场景。
本章仅对生产环境中最常用 Flannel Calico 模式做具体分析介绍
二 k8s 网络概念
1, k8s 三种网络
‘’
2,K8S 中 Pod 网络通信
2.1 Pod 内容器与容器之间的通信
在同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享同一个网络命名空间,相当于它们在同一台机器上一样,可以用 localhost 地址访问彼此的端口。
2.2 同一个 Node 内 Pod 之间的通信
每个 Pod 都有一个真实的全局 IP 地址,同一个 Node 内的不同 Pod 之间可以直接采用对方 Pod 的 IP 地址进行通信,Pod1 与 Pod2 都是通过 Veth 连接到同一个 docker0/cni0 网桥,网段相同,所以它们之间可以直接通信。
2.3 不同 Node 上 Pod 之间的通信
Pod 地址与 docker0 在同一网段,docker0 网段与宿主机网卡是两个不同的网段,且不同 Node 之间的通信只能通过宿主机的物理网卡进行。
要想实现不同 Node 上 Pod 之间的通信,就必须想办法通过主机的物理网卡 IP 地址进行寻址和通信。因此要满足两个条件:Pod 的 IP 不能冲突;将 Pod 的 IP 和所在的 Node 的 IP 关联起来,通过这个关联让不同 Node 上 Pod 之间直接通过内网 IP 地址通信。
三 Flannel 网络组件
1,Flannel 是什么
Flannel 的功能是让集群中的不同节点主机创建的 Docker 容器都具有全集群唯一的虚拟 IP 地址。
Flannel 是 Overlay 网络的一种,也是将 TCP 源数据包封装在另一种网络包里面进行路由转发和通信,目前支持 UDP、VXLAN、Host-gw 3种数据转发方式。
英文翻译:法兰绒
2,Overlay Network 是什么
虚拟隧道技术
叠加网络,在二层或者三层基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路隧道连接起来。
通过Overlay技术(可以理解成隧道技术),在原始报文外再包一层四层协议(UDP协议),通过主机网络进行路由转发。这种方式性能有一定损耗,主要体现在对原始报文的修改。目前Overlay主要采用VXLAN。
3,VXLAN与 VLAN
3.1 VXLAN 是什么
将源数据包封装到UDP中,并使用基础网络的IP/MAC作为外层报文头进行封装,然后在以太网上传输,到达目的地后由隧道端点解封装并将数据发送给目标地址。
3.2 vlan vxlan 区别
VLAN (Virtual Local Area Network) 和 VXLAN (Virtual eXtensible Local Area Network) 都是网络虚拟化技术,旨在提高网络资源的灵活性和利用率,但它们之间存在一些关键区别:
网络规模:
- VLAN 使用 12 位标识符来定义 VLAN ID,因此理论上最多可以创建 4094 个不同的 VLAN。这限制了其在网络规模上的应用,尤其是在大规模数据中心环境中。
- VXLAN 使用 24 位的 VNI (VXLAN Network Identifier),允许创建多达 2^24(约1600万个)个独立的虚拟网络,极大地扩展了网络规模,适合云和大数据中心环境。
网络路径利用效率:
- VLAN 依赖于 Spanning Tree Protocol (STP) 或 Rapid Spanning Tree Protocol (RSTP) 来防止网络中的广播风暴和环路,但这通常会导致部分网络路径被阻塞,降低了网络带宽的利用率。
- VXLAN 则通过将二层数据包封装在 UDP 报文中,利用 IP 网络进行传输,绕过了 STP 的限制,所有路径都可以被利用,提高了网络的效率和弹性。
MAC 地址表的管理:
- 在 VLAN 中,每个交换机都需要维护一个 MAC 地址表,随着网络规模的扩大,MAC 表可能达到其容量极限,导致性能问题。
- VXLAN 使用隧道技术,源和目的主机之间的二层通信可以在三层网络上透明传输,MAC 地址信息不需要在每一跳上都进行学习和维护,减轻了底层物理交换机的负担,防止了 MAC 表耗尽的问题。
应用场景