领航计划(三):整合KubeEdge全新网络组件EdgeMesh
什么是EdgeMesh
- EdgeMesh 作为 KubeEdge 集群的数据面组件,为应用程序提供了简单的服务发现与流量代理功能,从而屏蔽了边缘场景下复杂的网络结构
- KubeEdge 基于 Kubernetes 构建,将云原生容器化应用程序编排能力延伸到了边缘。但是,在边缘计算场景下,网络拓扑较为复杂,不同区域中的边缘节点往往网络不互通,并且应用之间流量的互通是业务的首要需求,而 EdgeMesh 正是对此提供了一套解决方案
为什么要使用EdgeMesh
EdgeMesh 满足边缘场景下的新需求(如边缘资源有限、边云网络不稳定、网络结构复杂等),即实现了高可用性、高可靠性和极致轻量化:
- 高可用性
- 利用 LibP2P 提供的能力,来打通边缘节点间的网络
- 将边缘节点间的通信分为局域网内和跨局域网
- 局域网内的通信:直接通信
- 跨局域网的通信:打洞成功时 Agent 之间建立直连隧道,否则通过中继转发流量
- 高可靠性 (离线场景)
- 元数据通过 KubeEdge 边云通道下发,无需访问云端 apiserver
- EdgeMesh 内部集成轻量的节点级 DNS 服务器,服务发现不依赖云端 CoreDNS
- 极致轻量化
用户价值
- 使用户具备了跨越不同局域网边到边/边到云/云到边的应用互访能力
- 相对于部署 CoreDNS + Kube-Proxy + CNI 这一套组件,用户只需要在节点部署一个 Agent 就能完成目标
部署安装EdgeMesh
前置准备
-
步骤1: 去除 K8s master 节点的污点(master不可调度)
-
步骤2: 给 Kubernetes API 服务添加过滤标签(kube-proxy跟EdgemEdge代理有冲突)
-
步骤3 启用 KubeEdge 的边缘 Kube-API 端点服务:启用 KubeEdge 的边缘 Kube-API 端点服
启用 KubeEdge 的边缘 Kube-API 端点服务
-
步骤1: 在云端,开启 dynamicController 模块,配置完成后,需要重启 cloudcore
-
步骤2: 在边缘节点,打开 metaServer 模块(如果你的 KubeEdge < 1.8.0,还需关闭旧版 edgeMesh 模块),配置完成后,需要重启 edgecore
-
步骤3: 在边缘节点,配置 clusterDNS 和 clusterDomain,配置完成后,需要重启 edgecore
如果 KubeEdge >= v1.12.0,请这样配置:
-
步骤4: 最后,在边缘节点,测试边缘 Kube-API 端点功能是否正常
- 需要等待一会,
curl 127.0.0.1:10550/api/v1/services
获取数据
Heml安装EdgeMesh
安装EdgeMesh:
- 其中agent.relayNodes[0].nodeName=<?>,是中继节点设置,你可以只指定为当前节点
- relayNodes[0].advertiseAddress=<?> 是当前的节点的ip