共计 2023 个字符,预计需要花费 6 分钟才能阅读完成。
导读
边缘计算平台,旨在将边缘端凑近数据源的计算单元纳入到核心云,实现集中管理,将云服务部署其上,及时响应终端申请。
然而,成千上万的边缘节点分布于各地,例如银行网点、车载节点等,节点数量甚至可能是几万到十几万,这就会对节点的承载能力造成微小冲击。Kubernetes 官网数据是能够反对纳管 5000 节点,如果想要纳管更多的边缘节点,该如何设计边缘计算平台架构呢?
本文针对以上问题,提供一些博云的解决思路。
多集群治理
多集群能够无效地扩大纳管节点的规模,而对 kubernetes 多集群的治理,各厂商的实现形式各有不同,不同的 API,不同的个性,因而市场上很难造成规范的解决方案。
现有的官网 kubernetes 多集群治理解决方案是 kubefed(Federation V2),即 kubernetes 联邦。Federation V1 早在 kubernetes 1.6 版本就开始提供服务,但因为 V1 架构的限度,无奈灵便反对更新的 k8s API 接口,加上其余很多问题影响集群治理的效率,因而 Federation V1 在 kubernetes 1.11 版本正式被弃用,当初提供服务的是 Federation V2。
由架构图实现能够看出,Federation V2 在 k8s 之上定义了一些资源,用 cluster configuration 记录集群的 endpoint,secret 等认证信息,type configuration 来定义须要用 Federation 托管的资源类型,提供了调度器来均衡各个集群的负载,以及多集群的 DNS 性能。
这种 controller 级别的集群治理,提供了丰盛的集群间交互性能,更实用于 异地多核心的集群灾备 等场景。在边缘场景,一个边缘端可能就是一个小集群(存在多个计算单元能够组成集群),这样会使得集群数量一直增多,进而对 Federation 的执行效率、API 的响应工夫都会有较为显著的影响。那么,该如何减弱集群数量的不确定性所带来的影响呢?
上面为大家展现,咱们在 KubeEdge 架构下如何解决多节点的问题。
Cloudcore 横向扩大
KubeEdge 架构下的云边协同通信采纳 websocket 形式,quic 作为备选。其中 websocket 性能最好,quic 在弱网络(频繁断开)状况下劣势较大,通信的服务端都是由 cloudcore 来实现。
这里咱们引入一个逻辑集群的概念,即每个 cloudcore 能够看做是一个集群,横向扩大多个 cloudcore 对接上层数量较大的边缘节点,向上只依靠在一个 kubernetes 集群即可,架构如下所示:
这样设计有如下几点劣势:
- 解决单个 cloudcore 音讯转发 / 接管等解决的性能瓶颈;
- 利用 / 设施的公布申请在 api-server 会被 cloudcore 监听捕捉到,转而由对应的 cloudcore 来解决申请到边端,这样缓解了 k8s 集群的压力;
- 核心云只须要一套 k8s 集群,调用链简略清晰,易于治理。
测试实现
环境信息:
测试集群单 master 节点,治理一个 node1 工作节点,cloudcore 运行在 maser 节点上,并已接入 edge1 边缘节点。
当初测试 node1 上创立 cloudcore 服务,将新的边缘节点 edge2 接入,节点组图如下:
集群下已有 cloudcore 和 edgecore,node1 是 k8s 的 x86 一般节点,当初该节点上运行 cloudcore 提供服务。
- 拷贝 cloudcore 二进制文件
- 从新生成证书
- 生成 cloudcore.yaml 配置文件
- 拷贝 k8s 集群的 kubeconfig 并将门路配置到 cloudcore.yaml
- 启动 cloudcore
edge2 是作为待接入集群的边缘节点,在该节点上运行 edgecore, server 指向 node1,启动服务。
能够看到 edge2 曾经注册到 node1 上的 cloudcore 并同步节点信息到 k8s,测试公布服务到 edge1 上:
总结
本文通过探讨多集群的形式来扩大纳管边缘节点的规模,剖析了以 kubefed 联邦进行多集群管理机制,比照不同场景下的特点,介绍了 KubeEdge 中利用横向扩大 cloudcore 的解决方案,并在测试环境部署实际。
在理论生产环境中,博云 BeyondEdge 边缘计算平台依靠于博云 BeyondContainer 容器云平台,提供云上服务的编排、治理、DevOps 等云原生能力,利用 KubeEdge 将这些能力延长到边缘节点,并将边缘设施形象到云端 BeyondContainer 容器云中,作为孪生设施资源,对立拜访入口。
并且,运行在云端的边缘平台组件 cloudcore 作为应用服务部署在 BeyondContainer 容器云中,充分利用容器云的产品能力,将 cloudcore 以高可用形式部署在 kubernetes 核心云,通过 ingress 裸露服务接口提供给边缘节点的组件 edgecore 拜访,能够依据边缘节点理论接入量动静扩大 cloudcore,作为逻辑上的集群扩大以进步核心云对边缘节点的承载能力。