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

随着 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 来实现 。

特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。