朱含
发布于:2022-01-12    本文总阅读量:

KubeEdge 结合 KubeSphere 实现海量边缘节点与边缘设备管理

KubeEdge 赋能 KubeSphere 边缘节点管理

KubeSphere 是在 Kubernetes 之上构建的企业级分布式多租户的容器平台,在与 KubeEdge 集成中,扮演者着“云端控制面”的角色。

下图中展示了边缘节点集成后,作为 Node 角色在 KubeSphere Console 上的展示效果,我们可以很方便的查看边缘节点容器日志和 Metrics。

为什么选择 KubeEdge 集成边缘计算能力?

首先 KubeEdge 本身的云边枢纽和架构,具有非常出色的云原生自治能力,支持边缘自治、消息与资源的可靠性同步、边缘节点的管理能力,边缘节点的 KubeFed 是极度轻量的,可按需裁剪定制。

除了 KubeEdge 本身架构带来的特性外,我们集成 KubeEdge 的其他原因主要有:

  • KubeEdge 是最早进入 CNCF 的边缘计算项目,项目成熟度比较高且社区比较活跃;
  • KubeSphere v2.1.0/v3.0.0 起,社区用户陆续提出了边缘节点自动化安装部署、监控、日志、调试等方面的需求;
  • KubeEdge 逐渐对边缘节点监控、日志、调试等有了更好的支持;
  • 补充 KubeEdge 边缘计算框架云端控制面。

在这样的背景下,KubeSphere 社区和 KubeEdge 社区紧密合作,从云端控制层面解决边缘节点纳管易用性和可观测性难题。KubeEdge 集成在 KubeSphere 容器平台后,可以补充 KubeSphere 的边缘计算能力,KubeSphere 则充当计算框架的一个云端控制面。

在集成过程中,我们也遇到了一些挑战:

  • 提供快速容器化部署方案
  • 实现边缘容器监控、日志依赖手动添加iptables规则,运维成本较高:iptables -t nat -A OUTPUT -p tcp --dport 10350 -j DNAT --to cloudcore ip:10003
  • 提供边缘节点辅助验证服务
  • 边缘测部署配置项较多,希望一条脚本解决边缘节点加入云端组件

以上描述低版本的版本的场景,高版本的场景有所变化。

集成方案

  • 方案:云端组件容器化部署、边缘节点 Binary 部署
  • 集成 Helm 安装云端组件,包括 cloudcore 和 edge-watcher controller 组件
  • edge-watcher controller 组件: 边缘节点验证、Join 脚本生成服务以及 iptables-manager 自动运维能力
  • 给边缘节点部署 keadm 工具添加额外自定义参数、添加国内下载源

目前 KubeSphere 支持的 KubeEdge 版本有 v1.5.1/1.6.1/1.6.2/1.7.2,支持的 Linux 系统 ubuntu/centos 等, cpu 架构类型:amd64(x86_64)/arm64。

KubeSphere 容器平台如何激活云端组件

  • 确保在 K8s 集群上安装了 KubeSphere 云控制面板和 ks-installer 安装工具,也可以使用 KubeKey 来直接创建 K8s 集群和 KubeSphere 套件
  • 确保激活了 metrics-server 组件
  • 按照文档进行安装集成
  • 另外还需要开放一些端口

添加边缘节点主要有两种集成方式:

  • 如果边缘节点与 K8s 集群不在一个局域网,云端相应端口 10000 ~ 10004 允许防火墙通过,映射到NodePort 30000~30004;
  • 如果边缘节点与 K8s 集群局域网内可达边缘节点,则直接使用 30000~30004 NodePort 方式集成;
  • 此外,需要激活 edgemesh 云边网络工具

KubeEdge 单 cloudcore 下可观测链路转发:

apiserver/metrics-server 通过 edge vip: 10351 进而转发给 Stream server | Tunnel server,最后会下发到边缘获取日志或者 Metrics 数据;

集成工作与可观测性- edge-watcher controller

controller 定义了两个 CRD:

  • iptables 作为 controller 的申明式 CRD,定义了控制器用于调谐的目标 iptables daemonset agent 的一些属性,如镜像,节点亲和性等;
  • iptablesrules 作为用户期望的 iptables 规则,会被 iptable daemonset watch,用于保证期望 iptables 规则生成,实现自动化运维;

注意:KubeEdge > 1.8 之后已经支持相同功能,后续集成会考虑弃用该组件,因为 KubeEdge 实现的 iptables manager 组件更加轻量;

集成工作与可观测性 - 边缘容器日志获取

在 UI 上的界面,在我们 KubeSphere 里面的界面大概如上图,这是边缘容器的一个日志,我们可以开启实施 debug 功能。

应用案例:中移物联网边缘计算平台

此案例来自中移物联网何毓川老师,分享了使用 KubeSphere + KubeEdge 来构建中移物联网边缘计算平台,中移物联网计划基于以上的集成和可观测方案,预期在每一个 KubeSphere 容器平台上,边缘节点接入量期望在1k左右。

视频播放地址: https://kubesphere.com.cn/live/edgebox-cic/

可观测性展望

  1. 目前的可观测数据主要通过 metrics-server 来获取,是实时数据,无法长期保存;
  2. 为解决边缘场景长期存储的问题提供最佳实践,例如,grafana/agent + cortex 或者 opentelemetry-collector + thanos 等套件, 利用 Remote Write 和 Object Storage 进行长期存储;
  3. 一起建设更好的 KubeEdge 社区:
    • Edge Runtime Service,用于辅助边缘场景中健康检查、节点合法性验证、收集重要 events 甚至生命周期监测等的 sidecar ;
    • KubeEdge 开发者接口, 类似 client-go,不限于 go 语言;
close

通过邮件接收 KubeSphere 最新的技术博客与产品更新的通知