跟着 Kubernetes 社区的发展,实际出产环境中运用 Kubernetes 越来越多,用户对 CNI (Container Network Interface) 的要求也越来越多。Fabric 作为博云自研的一款老练的 CNI 产品,旨在供给能适应多种场景,功用丰富易用且功用杰出的容器网络管理平台,从而有用的回运用户关于 CNI 的期待。

本期咱们将着重介绍 Fabric 的一些常用基础功用。

一、IP/MAC 固定

1.1 运用场景

  • 确保 Pod IP/MAC 不变

Kubernetes 具有很高的容错性,例如,当集群中的某一节点产生毛病时,pod 会主动漂移到其它正常的节点,这样就确保了事务的可用性,不再需求手动到对应的节点启动容器。但是 pod 在其它节点启动的进程中会重新恳求 IP/MAC 地址,假如不支撑 IP/MAC 固定的 CNI, pod 的 IP 地址很容易产生改变,这对很多强依赖 IP/MAC 的事务(如: 数据库服务, 微服务网关等)来说是不可承受的。

固定 IP/MAC 使漂移后的 pod 能够保持原有的身份产生网络拜访,提高了事务可用性,确保了关联事务都能正常与之产生拜访。

  • 简化相关网络战略的装备

在一些安全战略把控严格的企业中,针对特定的事务 pod 注册外围的网络战略就变得稍显复杂。此刻,假如事务 pod 的身份信息无法固定,则意味着 pod 重建或许产生漂移后对应的网络战略都要产生改变, 这关于运维工程师来说无疑是极为头疼的。因而,固定 IP/MAC 应运而生,这大大简化了网络战略的装备,并降低了保护成本。

1.2 产品特色

Fabric 固定 IP/MAC 的功用有如下特色:

(1) 更灵敏的 IP/MAC 预定池,只要 IP/MAC 未被运用就能加入预定池。

(2) CRD 规划,更契合 Kubernetes 的规划准则。

(3) 支撑常见的 Kubernetes Workload。

(4) Namespace 等级的安全阻隔,不同的租户能够运用不同的 IP/MAC 预定池。

(5) 预定池能够依据运用需求动态扩缩容。

(6) 关于无状况服务,每次分配会从 IP 池中随机分配;关于有状况的 Statefulset 类型运用,每个 Pod 实例会获取整个生命周期固定的 IP 地址。

1.3 完结原理

集群中的 Pod 在某一节点被创建时,Kubelet 都会经过 CNI 去恳求分配 IP,Fabric CNI 会经过 http 恳求的方法向 fabric api-server 发送恳求 IP 的恳求。当 fabric api-server 收到恳求 IP 的恳求之后,首先会依据恳求中的 pod 信息去检查 pod 对应的 annotation,判断 annotation 是否绑定 IP/MAC 预定池(即判断是否需求固定 IP/MAC)。假如没有绑定 IP/MAC 预定池则正常分配 IP,假如存在 IP/MAC 预定池,则运用 IP/MAC 预定池中的 IP/MAC,即完结固定 IP/MAC。

基本固定 IP/MAC 流程如图 1 所示:

四大功能!带你初识 Fabric | 容器网络系列第2期

图 1:fabric 固定 IP/MAC 流程

二、流量出口 – EgressIp

2.1 运用场景

  • 集群流量审计

当在集群中想要做流量审计工作时,计算集群中每条对外的流量是一件十分费事的工作,由于集群中的每个节点都能成为对外流量的出口。当集群的节点数量较多时,工作量更是会成倍的上涨。但是,经过 Fabric,咱们能够借助装备 EgressIP 来完美处理这个问题,所有的对外流量均从一组节点流出,工作人员从之前对集群的每个节点都进行计算,到只需求计算一组节点的流量记载,这大大降低了工作量。

  • 安全运维

在实际出产环境中,根据安全出产的准则,集群中只要单个的节点能够衔接外网,集群管理员只需求为单个节点注册对外战略。Pod 假如想要拜访外网,能够经过装备 EgressIP 来完结。

  • 固定出口 IP

某些运用(如数据库)只能承受指定源 IP 地址的流量,其它地址的衔接均不予承受。假如集群中所有需求拜访运用的流量都需求集群管理人员手动装备的话,这明显是一个巨大的工作量。对此咱们能够经过装备 EgressIP,来装备专门的流量出口,大大减轻工作人员的运维压力。

2.2 特色

Fabric EgressIP 功用的规划有如下特色:

(1) 装备灵敏:EgressIP 能够装备为 namespace 等级,也能够设置为 pod 等级,满足不同等级的装备需求。

(2) 高可用性:当 fabric 重启之后,会主动重新分配 EgressIP。当正在运用的 EgressIP 挂掉之后,fabric 会主动在装备列表中挑选一个最优且可用的 EgressIP 进行替换。

(3) EgressIP 优选,在 EgressIP 可用列表中优先会挑选 pod 地点节点做为 EgressIP,从而减少网络损耗。

2.3 完结原理

  • Egress IP 挑选原理

(1) 获取可用 EgressIP 列表。

(2) 判断可用 EgressIP 中是否有当时 pod 地点节点,假如存在则挑选当时节点 IP 为 EgressIP。

(3) 假如不存在则挑选当时 pod 之前被分配过的 EgressIP。

(4) 假如 pod 之前运用的 EgressIP 也不存在,则运用可用 EgerssIP 列表的最终一位。

  • 网络传输原理

当 pod 数据拜访意图地址被判定为外部网络时,数据会发往 EgressIP 地点的节点,然后从 EgressIP 地点节点传输到外部网络。

具体网络传输进程如图 2 所示:

四大功能!带你初识 Fabric | 容器网络系列第2期

图 2:设置 pod 经过 EgressIP 拜访外部网络数据传输流程

注:Fabric overlay 网络支撑多种封装协议(vxlan、gre、geneve),图 2 仅以 vxlan 作为示例,不代表仅支撑 vxlan。

三、QoS (Quality of Service) 服务质量

3.1 运用场景

  • 事务 Pod 双向限速

当集群网络资源有限时,某一时刻产生的大文件传输进程,或许其它需求占用大规模网络资源的情况,极易造成集群网络的溃散。经过 QoS 装备,能够限制某些容易产生大规模传输的网络资源配额,给予其正常的网络带宽,从而确保集群全体网络的正常。

3.2 特色

(1) 运用简单,直接经过的注解(annotation)进行双向的 Qos 装备。

(2) 支撑双栈,IPV4 和 IPV6 都有很好的支撑。

(3) 支撑多网络,在多网络的环境下,支撑对每个网卡别离进行 QoS 装备。

3.3 完结原理

Fabric 的容器网络架构根据 OpenvSwitch,pod 经过 veth peer 衔接在 ovs bridge 的 port 上,主机侧的 veth 等同于 ovs 的 interface (网卡),interface 插在 ovs port 里,所以咱们控制 pod 的 QoS 就等同于控制对应 ovs interface/port 的 QoS。因而,装备 pod 出栈的 Qos 实际上是装备主机侧 veth 对应的 interface 的 ingress 特色,装备 pod 入栈的 QoS 实际是装备主机侧 veth 对应的 port (interface 刺进的当地) 的 QoS 特色。

Fabric 装备 QoS 的原理如图 3 所示:

四大功能!带你初识 Fabric | 容器网络系列第2期

图 3:Fabric 装备 QoS 原理

四、租户阻隔

4.1 运用场景

  • 多租户之间的网络阻隔

多租户是一种软件规划架构,指的是单个软件实例能够为不同的用户供给服务。多租户架构在云计算领域也有广泛的运用,在云计算领域多租户除了指共享软件服务之外,也能够指服务器资源,服务器资源在不同的租户之间进行分配。多租户的特性就是要处理租户间的阻隔问题,不同的租户之间不能相互拜访数据,以此到达安全阻隔的作用。

4.2 特色

Fabric 租户阻隔功用规划有如下特色:

(1) 运用方便,直接添加注解(annotation)信息,即可为容器装备多租户阻隔。

(2) 装备灵敏,除了基本的租户之间的阻隔之外,同时还能够装备兄弟租户之间的互通,能够适应多种运用场景。

(3) 租户白名单规划,几个系统等级的 namespace (kube-system, kube-public, default, kube-node-lease, monitoring, ingerss-nginx) 是任意租户可达的。

4.3 完结原理

当集群中已经装备多租户时,pod 假如拜访集群网络会首先进行网络战略验证,即验证网络拜访源地址和意图地址网络是否契合多租户网络阻隔战略。主要判断的是否在同一 namespace 下、源地址或意图地址是否在白名单内、租户是否存在、是否装备了兄弟租户(租户之间互通)。

扼要的多租户网络阻隔验证战略如图 4 所示:

四大功能!带你初识 Fabric | 容器网络系列第2期

图 4:多租户网络阻隔验证战略

五、总结与展望

现在,Fabric 有着非常丰富且强壮的功用,但由于篇幅所限,本文只能介绍一些常用且基础的功用。后续 Fabric 会继续优化已有的功用,并活跃开发更多实用的新功用。在此之后,咱们还会分享一些 Fabric 的进阶的功用的规划方案和相关特性。