开源边缘计算项目【FabEdge v0.8.0】配置 connector 公开端口操作说明
FabEdge 项目简介
FabEdge 是博云在 2021 年 8 月发起,基于 Kubernetes 构建的专注于边缘计算场景的容器网络方案,支持 KubeEdge 、SuperEdge、OpenYurt 等主流边缘计算框架。旨在解决边缘计算场景下容器网络配置管理复杂、网络割裂互不通信、缺少拓扑感知能力、无法提供就近访问等问题,适用于物联网,车联网、智慧城市、智慧园区等多种边缘场景。
此后产品不断迭代,在 2022 年 3 月 8 日,博云正式将 FabEdge 捐献给 CNCF 社区,并通过相关评定,成为 CNCF 沙箱中首个边缘容器网络项目。目前 FabEdge 社区已有 200 多位开发者。
FabEdge 最近正式发布了 V0.8.0 版本,该版本增强了边缘侧的服务访问能力,改善了边缘节点的连通性。
Github:https://github.com/FabEdge
边缘侧服务访问能力增强
这次更新主要是改善 KubeEdge 集群边缘侧的服务访问能力,因为默认情况下 KubeEdge 集群不会有 kube-proxy 运行,也不能访问 coredns。
FabEdge 以前内部实现了一个 fab-proxy 来实现服务代理,并在边缘侧使用 nodelocaldns 提供服务域名解析,但是 fab-proxy 能力有限,且不能及时响应服务信息变更,nodelocaldns 的也不适合边缘场景,为了解决以上问题,FabEdge 此次更新将 kube-proxy 和 coredns 整合至 fabedge-agent 内,并利用 edgecore 的 metaServer 组件向 fabedge-agent 内的 kube-proxy 和 coredns 组件提供数据,从而为边缘节点上运行的容器提供了服务域名解析能力和服务代理。
允许配置 connector 节点的公开端口
FabEdge v0.8.0 添加了 connector 公开端⼝配置的能⼒。之前 FabEdge 利用 strongswan 来创建 VPN 隧道实现云边通信,strongswan 默认的端口为 500 和 4500,connector 节点的 strongswan 占用的端口通常需要做公网端口映射,映射出来的端口很可能不是 500 和 4500,这样限制了 FabEdge 的使用场景。
这次更新之后,用户可以直接设置 connector 节点的公开端口,让 strongswan 可以通过非 500 和非 4500 端口建立隧道。但边缘侧暂时不能也没有必要进行端口配置,边缘侧的此类问题可以通过打洞(本次也有更新)功能来解决。
示例
配置 connector 节点公开端口
环境信息:
kubernetes v1.22.5
kubeedge v1.12.2
flannel v0.19.2
fabedge v0.8.0
kubernetes 集群节点信息如下:
图片其中 beijing 节点要作为 connector 节点,它和 node1 位于同一个局域网,edge1、 edge2 位于另一个局域网。
想让边缘侧访问云端,需要为 beijing 节点做端口映射,这里我们选择将 4500 映射为 45000。
具体的映射方法需要读者根据环境调整,本文的 beijing 节点使用 vagrant 创建的,其实际映射配置为:
笔者开发时也会因为环境限制偶尔使用 iptables 来实现端口映射,具体规则为:
这里再强调一次,使用 strongswan 的客户端使用非 500 端口进行 IKE 及通信时,服务端的实际目标端口为 4500。
安装 FabEdge
本文采用 quickstart.sh 脚本来安装,重点介绍一些参数配置,具体的安装文档参考快速安装。
用 helm 添加 fabedge repo:
执行安装命令:
注意,上面的 connector-public-addresses 参数没有配置为 beijing 节点的内网地址 192.168.56.11 ,而是 beijing 节点对外的地址 10.40.20.181,端口也是我们之前映射的 45000 端口。
如果您选择手动安装 FabEdge, 相应的配置可以参考以下内容:
验证
来检查一下 edge1, edge2 跟 connector 创建的隧道信息:
上面的输出结果包含这么一行:
这就意味着 edge1, edge2 上的 strongswan 连接云端的 strongswan 时使用了 10.40.20.181:45000 这个地址,证明我们的配置成功了。下面让我们看看这个配置会影响 edge1, edge2 之间的通信吗?
先为 edge1, edge2 创建一个 community:
然后检查 edge1, edge2 彼此之间的隧道信息:
从上面的输出结果可以看出:edge1 与 edge2 之间的隧道依然利用 4500 通信,不受 connector 配置的影响。如果希望边缘节点之间通过 500, 4500 端口外的值通信要怎么办?
答案是不能且没必要,因为边缘网络比较复杂,为每个边缘节点的 strongswan 都进行端口映射是个很麻烦的事,而且有些节点本身就在一个局域网,它们之间用 500, 4500 通信,却为外部通信配置不同的端口也会引入复杂的配置工作。但有些时候,边缘节点就是需要跨网通信,不能配置端口又该怎么做,那就需要使用 FabEdge v0.8.0 引入的新特性:打洞,以后我们再写。
以上介绍了配置 connector 公开端口的方法和效果,需要一提的是,一旦使用 500, 4500 外的端口进行通信,strongswan 就会利用 non-esp 格式,这种格式会一定程度上影响性能,所以能使用 500, 4500 的情况下最好还是使用。
版权声明: 本文为 InfoQ 作者【BoCloud博云】的原创文章。
原文链接:【http://xie.infoq.cn/article/b7a57d777f681b78600fee919】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论