文 | SuperEdge 研制团队

FabEdge 研制团队

腾讯云容器中心边际核算团队

布景

在边际核算的场景下,边际节点和云端为单向网络,从云端无法直接拜访边际节点,导致了以下的问题:

  • 云端无法拜访边际端的 service ;

  • 边拜访云端 service 需要以 nodeport 的方法;

  • 云边端 podIp 无法直通。

为了运用户无感知单向网络带来的差异,FabEdge 与 SuperEdge 协作,完成在云边 podIp 直通

SuperEdge 介绍

1.1 什么是 SuperEdge ?

SuperEdge 是 Kubernetes 原生的边际容器计划,它将 Kubernetes 强壮的容器办理才能扩展到边际核算场景中,针对边际核算场景中常见的技能挑战供给了处理计划,如:单集群节点跨地域、云边网络不可靠、边际节点位于 NAT 网络等。这些才能能够让应用很容易地布置到边际核算节点上,而且可靠地运转。SuperEdge 能够很方便地把散布在各处的核算资源放到一个 Kubernetes 集群中办理,包含但不限于:边际云核算资源、私有云资源、现场设备,打造归于您的边际 PaaS 平台。

SuperEdge 支撑所有 Kubernetes 资源类型API 接口运用方法运维工具,无额定的学习本钱。也兼容其他云原生项目,如:Promethues,运用者能够结合其他所需的云原生项目一起运用。

1.2 项目特性

SuperEdge 具有如下特性:

  • Kubernetes 原生:SuperEdge 以无侵入的方法将 Kubernetes 强壮的容器编列、调度才能拓宽到边际端,其原生支撑 Kubernetes,彻底兼容 Kubernetes 所有 API 及资源,无额定学习本钱;

  • 边际自治:SuperEdge 供给 L3 级边际自治才能,当边际节点与云端网络连接不稳定或处于离线状态时,边际节点能够自主作业,化解了网络不可靠所带来的晦气影响;

  • 散布式节点健康监测:SuperEdge 是业内首个供给边际侧健康监测才能的开源容器办理体系。SuperEdge 能在边际侧继续看护进程,并收集节点的故障信息,完成愈加快速和精准的问题发现与报告。此外,其散布式的设计还能够完成多区域、多范围的监测和办理;

  • 内置边际编列才能:SuperEdge 能够自动布置多区域的微服务,方便办理运转于多个区域的微服务。一起,网格内闭环服务能够有用减少运转负载,提高体系的容错才能和可用性;

  • 内网穿透:SuperEdge 能够确保 Kubernetes 节点在有无公共网络的情况下都能够连续运转和保护,而且一起支撑传输控制协议(TCP)、超文本传输协议(HTTP)、超文本传输安全协议(HTTPS)和 SSH 协议。

FabEdge 介绍

2.1 架构图

FabEdge 和 SuperEdge 联合在边缘 K8s 集群支持原生 Service 云边互访和 PodIP 直通

FabEdge 在 SuperEdge 的基础上,树立了一个依据 IPSec 地道的,三层的数据转发面,使能云端和边际端 POD 通过 IP 地址直接进行通讯,包含普通的 POD 和运用了 hostnework 的 POD ,以及通过 ClusterIP 拜访 Service ,不论 Service 的 Endpoint 在云端或边际端。

FabEdge 包含三个首要组件:

  • Operator:运转在云端任何节点,监听 Node 等资源的变化,为其它 FabEdge 组件保护证书,地道等配置,并保存到相应 configmap/secret ;一起担任 Agent 的生命周期办理,包含创建/删去等;

  • Connector:运转在云端选定节点,运用 Operator 生成的配置,担任云端地道的办理,担任在云端和边际节点之间转发流量;

  • Agent:运转在边际节点,运用 Operator 生成的配置,担任本节点的地道,路由,iptables 规矩的办理。

2.2 原理图

FabEdge 和 SuperEdge 联合在边缘 K8s 集群支持原生 Service 云边互访和 PodIP 直通

以上图环境为例,一共 4 个节点,两个云端的节点:node1, node2, 两个边际节点:edge1, edge2。node1 和 node2 运转 Flannel ,它们之间会有一个 flannel 办理的 VXLAN 的地道。edge1 和 edge2 由 FabEdge 办理,会树立到运转 Connector 的节点 node1 的 IPSec 的地道。一起,edge1 和 edge2 参加了同一个 FabEdge 的 Community , 因而它们之间会有一条直连的 IPSec 地道。在边际节点上,POD 接入一个 Linux 的网桥,获取一个全局仅有的 IP 地址。

典型的拜访场景如下

  • 边际 POD 拜访云端的 POD , 比方 c1(蓝色虚线), 流量从源 pod 宣布,通过网桥,通过路由,iptables 规矩,xfrm 战略,进入 IPSec 地道,抵达云端 Connector 节点 node1,抵达方针 pod ;

  • 边际 POD 拜访边际的 POD , 比方 c2(红色虚线), 流量从源 pod 宣布,通过网桥,通过路由,iptables 规矩,xfrm 战略,进入 IPSec 地道,抵达边际节点 edge2,抵达方针 pod ;

  • 边际 POD 拜访云端的 POD , 比方 c3(紫色虚线), 流量从 pod 宣布,通过网桥,通过路由,iptables 规矩,xfrm 战略,进入 IPSec 地道,抵达云端 Connector 节点,再通过一次路由转发,运用 Flannedl 的 VXLAN 地道,抵达方针节点 node2,抵达方针 pod ;

  • 云端 POD 拜访云端的 POD , 比方 c4(绿色虚线),仍然有 Flannel 办理,通过 VXLAN 抵达方针 pod ,这个进程和 FabEdge 无关;

  • POD 拜访 Service ,通过本地 kube-proxy 办理的 iptables NAT 后,等同于 POD 到 POD 的拜访,不再赘述。

FabEdge 与 SuperEdge 结合完成 Service 互访和 podIp 直通计划验证

3.1 验证的环境

FabEdge 和 SuperEdge 联合在边缘 K8s 集群支持原生 Service 云边互访和 PodIP 直通

在 SuperEdge 边际独立集群中添加 4 个节点,2 个节点(cloud-1 和 cloud-2)在云端和 master 节点在同一内网,2 个节点(edge-1 和 edge-2)在边际端。将 cloud-1 节点作为 connector 节点,将 edge-1 和 edge-2 参加 community 。详细的搭建进程,请参照 FabEdge 文档。

3.2 验证场景

3.2.1 云端 pod 拜访边际端 pod

FabEdge 和 SuperEdge 联合在边缘 K8s 集群支持原生 Service 云边互访和 PodIP 直通

3.2.1.1 cloud-2 上的 pod 拜访边际端 edge-1 上的 pod

FabEdge 在 edge-1 节点的 node 资源写入 cloud-1 的节点的内网 IP 和 flannnel.1 网卡的 mac 地址,将 edge-1 伪装成 cloud-1 节点。

metadata:    annotations:        flannel.alpha.coreos.com/backend-data: '{"VtepMAC":"cloud-1 flannel.1 mac"}'        flannel.alpha.coreos.com/backend-type: vxlan        flannel.alpha.coreos.com/kube-subnet-manager: "true"        flannel.alpha.coreos.com/public-ip: cloud-1 内网ip

仿制代码

  • cloud-2 上的 pod 拜访 cloud-1 上的 pod 恳求,首要通过 cni0 网桥,依据路由规矩,将恳求转发到 flannel.1 上,由 flannel.1 对恳求信息进行封包,因为 FabEdge 将 edge-1 节点伪装成 cloud-1 节点,因而 flannel.1 会将封包之后的恳求信息发送到 cloud-1 节点;

  • cloud-1 节点在接收到恳求包之后,会在本节点的 flannel.1 对恳求包进行解包,然后将恳求通过 ipsec vpn 地道转发到 edge-1 节点。edge-1 节点在收到包之后依据路由规矩将恳求包发送 br-fabedge 网桥,然后再转发到 pod 中;

  • 回包路径与恳求包路径相同,响应消息抵达 cloud-1 之后,先在 flannel.1 上进行封包,然后发送到 cloud-2 上,在 flannel.1 上进行解包。

3.2.1.2 cloud-1 上的 pod 拜访边际端 edge-1 上的 pod

cloud-1 上的 pod,因为不需要通过 flannel 的网络将恳求转发到 cloud-1 ,因而 pod 的恳求不会通过 cloud-1 的 flannel.1

3.2.2 edge-1 上的 pod 拜访 edge-2 上的 pod

因为 edge-1 和 edge-2 在同一个 community ,FabEdge 会在节点之间树立 ipsec vpn 地道,边际节点 pod 之间的恳求,会通过 ipsec vpn 地道进行转发。

3.3 验证成果

3.3.1 云端访边际端

FabEdge 和 SuperEdge 联合在边缘 K8s 集群支持原生 Service 云边互访和 PodIP 直通

3.3.2 边际端访云端

FabEdge 和 SuperEdge 联合在边缘 K8s 集群支持原生 Service 云边互访和 PodIP 直通

3.3.3 边际端互访

FabEdge 和 SuperEdge 联合在边缘 K8s 集群支持原生 Service 云边互访和 PodIP 直通

依据以上的测验成果能够得出以下的结论:

  • 运用 FabEdge 能够完成云边端 service 互访;

  • 运用 FabEdge 能够完成云边 podIp 直通;

  • 运用 FabEdge 不影响边际节点间 pod 的通讯。

展望

FabEdge 和 SuperEdge 已完成了一期的集成作业,社区有不少小伙伴对这个联合计划感兴趣。两个开源社区首要研制团队也一直在推进协作,近期博云和腾讯云树立了开源技能协作关系,而且博云参加到腾讯云原生加速器项目中,两边将会进一步加强协作,为开源社区贡献优秀的开源项目。

FabEdge 和 SuperEdge 联合在边缘 K8s 集群支持原生 Service 云边互访和 PodIP 直通

后续 FabEdge 和 SuperEdge 还会找更多的边际网络场景进行互相协作,确定会进行的一些 TODO 如下:

  • SuperEdge 支撑更多的 CNI,包含 Calico、Cilium 等;

  • SuperEdge NodeUnit 和 FabEdge Community 自动同步标签,简化边边通讯流程;

  • 支撑 FabEdge Connector 的 HA/HPA,以便网络的稳定性和高可性的支撑。

欢迎继续关注 FabEdge 和 SuperEdge 对边际网络方面的支撑。

FabEdge 相关材料

FabEdge 是一款针对边际核算场景下开源网络计划,首要处理容器网络配置办理杂乱、网络割裂互不通讯、短少服务发现、短少拓扑感知才能、无法供给就近拜访等难题。

Github:

github.com/FabEdge/fab…

官方网站

www.fabedge.io

视频回看汇总:

space.bilibili.com/524926244

微信群

扫码参加微信沟通群

FabEdge 和 SuperEdge 联合在边缘 K8s 集群支持原生 Service 云边互访和 PodIP 直通

(入群暗号:FabEdge)