天天看点

Kubernetes必备知识: 主流网络方案

所属技术领域:

K8s

|名词定义|

常见的容器网络方案可以从协议栈层级、穿越形态、隔离方式这三种形式进行划分。

协议栈层级:

第一种:协议栈二层。

第二种:协议栈三层(纯路由转发)。

第三种:协议栈二层加三层。

穿越形态:

按穿越的形态划分,这个与实际部署环境十分相关。穿越形态分为两种:Underlay、Overlay。

Underlay:在一个较好的一个可控的网络场景下,我们一般利用 Underlay。可以这样通俗的理解,无论下面是裸机还是虚拟机,只要网络可控,整个容器的网络便可直接穿过去 ,这就是 Underlay。

Overlay:Overlay 在云化场景比较常见。Overlay 下面是受控的 VPC 网络,当出现不属于 VPC 管辖范围中的 IP 或者 MAC,VPC 将不允许此 IP/MAC 穿越。出现这种情况时,我们都利用 Overlay 方式来做。

隔离方式:

隔离方式与多种户型相关(用户与用户之间的隔离方式),隔离方式分为 FLAT、VLAN、VXLAN 三种:

 FLAT:纯扁平网络,无隔离;

 VLAN:VLAN 机房中使用偏多,但实际上存在一个问题?就是它总的租户数量受限。众所周知,VLAN 具有数量限制。

 VXLAN:VXLAN 是现下较为主流的一种隔离方式。因为它的规模性较好较大,且它基于 IP 穿越方式较好。

|技术特点|

 典型的容器网络实现方案

容器网络可能时Kubernetes领域最为百花齐放的一个领域,依照IaaS层的配置、外部物理网络的设备、性能or灵活优先,可以有不同的实现:

Flannel,最为普遍的实现,提供多种网络backend实现,覆盖多种场景

Calico,采用BGP提供网络直连,功能丰富,对底层网络有要求

Canal(Flannel for network + Calico for Firewalling),嫁接型创新项目

Ciilium,基于eBPF和XDP的高性能Overlay网络方案

Kube-router,同时采用BGP提供网络直连,集成基于LVS的负载均衡能力

Pomana,才赢BGP or OSPF 提供网络直连能力的方案

WeaveNet,采用UDP封装实现L2 Overlay,支持用户态(慢,可加密)/内内核态(快,不能加密)两种实现

 Flannel 方案

Kubernetes必备知识: 主流网络方案

Flannel 方案是目前使用最为普遍的。如上图所示,可以看到一个典型的容器网方案。它首先要解决的是 container 的包如何到达 Host,这里采用的是加一个 Bridge 的方式。它的 backend 其实是独立的,也就是说这个包如何离开 Host,是采用哪种封装方式,还是不需要封装,都是可选择的。

现在来介绍三种主要的 backend:

 一种是用户态的 udp,这种是最早期的实现;

 然后是内核的 Vxlan,这两种都算是 overlay 的方案。Vxlan 的性能会比较好一点,但是它对内核的版本是有要求的,需要内核支持 Vxlan 的特性功能;

 如果你的集群规模不够大,又处于同一个二层域,也可以选择采用 host-gw 的方式。这种方式的 backend 基本上是由一段广播路由规则来启动的,性能比较高。

|资料来源|

名词定义:

https://blog.csdn.net/bbwangj/article/details/82355337