关于云原生:四大功能带你初识-Fabric-容器网络系列第2期

31次阅读

共计 3496 个字符,预计需要花费 9 分钟才能阅读完成。

容器网络系列:第二期

随着 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 所示:

图 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 所示:

图 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 所示:

图 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 所示:

图 4:多租户网络隔离验证策略

五、总结与瞻望

目前,Fabric 有着十分丰盛且弱小的性能,但因为篇幅所限,本文只能介绍一些罕用且根底的性能。后续 Fabric 会继续优化已有的性能,并踊跃开发更多实用的新性能。在此之后,咱们还会分享一些 Fabric 的进阶的性能的设计方案和相干个性。

点击 BoCloud 博云理解更多解决方案

正文完
 0