Reference:

IoT 边缘计算系列文章

什么是边缘容器?

边缘容器的概念

边缘容器是分散的计算资源,尽可能靠近最终用户或设备,以减少延迟、节省带宽并增强整体数字体验。

可以访问互联网的设备数量每天都在增加。有包括但不限于:

  • 智能电视
  • 智能家居
  • 智能手机
  • 智能汽车
  • 物联网 IoT 创造的多种多样其他智能设备

大多数用户运行对时间敏感的应用程序,滞后会降低用户体验的质量。遥远的集中式云服务存在高延迟,通常是应用程序性能不佳的罪魁祸首。开发边缘计算旨在使数据处理更接近用户并解决与网络相关的性能问题。

具体而言,边缘容器允许组织通过将应用程序的关键组件移动到网络边缘来分散服务。通过将智能转移到边缘,组织可以实现更低的网络成本和更快的响应时间。

但是,当组织采用边缘容器/计算时,他们会遇到诸如 管理异构设备(不同的处理器、操作系统等), 资源受限的设备,以及间歇性连接等问题。

边缘计算的发展趋势

Reference:

Edge Computing will be 4x larger than cloud and will generate 75% of data worldwide by 2025. With hardware and

software spread across hundreds or thousands of locations, the only feasible way to manage these distributed systems are the simple paradigms around observability, loosely coupled systems, declarative APIs, and robust automation, that have made cloud native technologies so successful in the cloud. Kubernetes is already becoming a key part of the edge ecosystem, driving integrations and operations.

到 2025 年,全世界** 75%的数据将会产生于边缘,边缘计算的规模将会比云大 4 倍。由于软硬件分散部署在成百上千的 不同位置上,管理这些分布式系统的唯一可行的方法是围绕可观测性、松耦合系统、声明式 API 和强大的自动化**的简单范式,这些范式已经在云计算中促使云原生技术获得成功。Kubernetes 已经成为边缘生态系统的关键部分,持续推动其集成和运维。

-- Reported from Kubernetes on EDGE DAY

为什么需要容器?

容器是易于部署的软件包,容器化应用程序易于分发,使其成为边缘计算解决方案的自然选择。与传统云容器相比,边缘容器可以并行部署到地理位置不同的接入点(PoP),以实现更高级别的可用性。

云容器和边缘容器之间的主要区别在于位置。虽然云容器在遥远的区域数据中心运行,但边缘容器位于网络的边缘,更接近最终用户。

由于主要区别在于位置,边缘容器使用与云容器相同的工具,因此开发人员可以使用其现有的 Docker 专业知识进行边缘计算。若要管理容器,组织可以使用 Web UI、terraform/ansible 或容器编排系统 (K8S 等)。

边缘容器的优点

  • 低延迟:边缘容器提供极低的延迟,因为它们距离最终用户只有"最后一公里"。
  • 可扩展性:边缘网络比集中式云具有更多的 PoP。因此,边缘容器可以同时部署到多个位置,使组织有机会更好地满足区域需求。
  • 成熟度:Docker 等容器技术被认为是成熟的,经过实战考验。此外,无需重新训练,因此测试边缘容器的开发人员可以使用他们熟悉的相同 Docker 工具。
  • 减少带宽:集中式应用程序可能会产生高额网络费用,因为所有流量都集中在云供应商的数据中心。边缘容器靠近用户,可以提供预处理和缓存。

边缘容器的缺点

  • 管理复杂性:将多个容器,多个操作系统,多个架构设备分布在许多区域需要仔细规划和运维/监控。
  • 增加攻击面:边缘设备往往由于绑定硬件以及分散分布,一般难以及时更新,导致边缘设备经常成为被攻击成功的对象。
  • PoP 之间的网络费用:除了常规的入口和出口费用外,边缘容器还对 PoP 之间的流量收取单独的费用,需要考虑这些费用。(如:5G 物联网卡的网络费用)
  • 资源紧张: CPU/ 内存 / 存储 资源紧张,边缘设备相比云中心的资源,资源更为紧张,提供不了云中心类似的 CPU/内存/存储。一个边缘设备的资源一般在:1C0.5G8G - 2C8G32G 之间
  • 网络条件恶劣: 比如存在 5G 收费网络的情况,且访问的目的端地址需要开通权限,且按照流量收费,且因为 5G 网络条件,网络传输能力受限,且不稳定(可能会在一段时间内离线)

边缘计算的应用场景

这里由于笔者的能力所限,仅做部分举例:

  • 商业卫星
  • 航空设备:如战斗机等
  • 交通行业:
    • 收费站
    • 智慧交管
    • 车路协同
    • 智慧停车
  • 能源行业
    • 煤矿设备
  • 工业制造
    • 产线
  • CDN
  • 智能汽车
  • 智慧园区
  • 金融:银行终端
  • 智慧物流
  • 电力
    • 电力巡检
  • 安防监控

IoT 边缘容器集群管理的通用架构

针对边缘容器的缺点之一:管理的复杂性,由于软硬件分散部署在成百上千的不同位置上,管理这些分布式系统的唯一可行的方法是围绕可观测性、松耦合系统、声明式 API 和强大的自动化的简单范式,这些范式已经在云计算中促使云原生技术获得成功。

通用的架构是: 云-边-端 三层架构。

  1. : 云中心, 统一管理,核心计算;
  2. :边缘侧,边缘计算,边缘网络, 联通到云端;
  3. : 端侧设备。

方案至少需要实现以下目标:

  • 云边协同:通过云端管理边端的所有容器集群。管理至少包括 2 方面:下发指令,查看健康状态;
  • 边缘自治:云/边网络中断/不稳定/异常时,边端无法连接到云端,这种情况下边端可以正常运行;
  • 边端轻量化:需要资源少,支持 arm 架构,可以在资源受限的情况下正常运行

IoT 边缘容器集群管理的几种架构方案

总结来看,有以下多种基于开源的实践方案:

  1. Rancher + K3s: Rancher 用于云端场景,K3s 用于边场景。端是各类设备。 多个 K3s 边集群通过 Rancher 统一管理。
  2. HashiCorp 解决方案: Nomad+ (consul 可选)+ docker/容器,这是一种受欢迎程度也很广,但是比起 k8s 还是略低的编排技术。通过 Nomad UI/API/CLI 统一管理,将 nomad agent + (consul agent 可选) + docker/其他容器 作为边/端场景。
  3. portainer+ docker: Portainer 是类似 rancher 的容器管理方案,但是可以管理多种容器编排系统,如:Docker, Docker Swarm, Kubernetes, Nomad. 这里选择直接管理 docker 及 docker swarm 的方式。Portainer 用于云端场景,作为统一管理入口,docker + portainer agent 作为边/端场景。
  4. KubeEdge: KubeEdge 是一个开源系统,用于将本地容器化应用协调能力扩展到边缘的主机。它建立在 kubernetes 之上,为网络、应用部署和云与边缘之间的元数据同步提供基本的基础设施支持。在这种方案下,Kubernetes 集群/Kubeedge CloudCore 作为云端场景,EdgeCore 作为边,edged 作为端。
  5. 除了以上较成熟且有案例的方案外,还有以下方案:
    1. OpenYurt
    2. SuperEdge
    3. Akri
    4. WasmEdge, 基于 Wasm, WasmEdge 为云原生和边缘原生环境中的 Linux 容器提供了一个轻量级、快速、安全和可移植的替代方案。未来可期。

这里重点对前 4 个笔者认为较为成熟的、现在已经可落地的方案做一个简要说明。

继续阅读

  1. 大规模 IoT 边缘容器集群管理的几种架构-1-Rancher+K3s
  2. 大规模 IoT 边缘容器集群管理的几种架构-2-HashiCorp 解决方案 Nomad
  3. 大规模 IoT 边缘容器集群管理的几种架构-3-Portainer
  4. 大规模 IoT 边缘容器集群管理的几种架构-4-Kubeedge
  5. 大规模 IoT 边缘容器集群管理的几种架构-5-总结

参考资料

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介的更多相关文章

  1. 容器、容器集群管理平台与 Kubernetes 技术漫谈

    原文:https://www.kubernetes.org.cn/4786.html 我们为什么使用容器? 我们为什么使用虚拟机(云主机)? 为什么使用物理机? 这一系列的问题并没有一个统一的标准答案 ...

  2. Docker&Kubernetes沙龙干货集锦:容器集群管理利器kubernetes详谈-CSDN.NET

    Docker&Kubernetes沙龙干货集锦:容器集群管理利器kubernetes详谈-CSDN.NET undefined Package - crawler undefined 科学网- ...

  3. Docker容器集群管理之Swarm

    Docker容器集群管理主流方案 Swarm Docker公司自研发的集群管理系统. Kubernetes Google开源的一个容器集群管理系统,用于自动化部署.扩展和管理容器应用.也称为K8S ...

  4. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  5. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...

  6. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...

  7. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...

  8. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...

  9. Kubernetes容器集群管理环境 - Prometheus监控篇

    一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...

  10. Kubernetes容器集群管理环境 - 完整部署(中篇)

    接着Kubernetes容器集群管理环境 - 完整部署(上篇)继续往下部署: 八.部署master节点master节点的kube-apiserver.kube-scheduler 和 kube-con ...

随机推荐

  1. xshell取消置顶

    现象:xshell置顶,导致无法正常浏览其他应用,文件等 原因分析:打开xshell时,触发其置顶快捷方式:Alt+A 解决建议:针对此问题,首先,可以从"查看栏"手动取消置顶:其 ...

  2. 【大数据面试】Flink 04:状态编程与容错机制、Table API、SQL、Flink CEP

    六.状态编程与容错机制 1.状态介绍 (1)分类 流式计算分为无状态和有状态 无状态流针对每个独立事件输出结果,有状态流需要维护一个状态,并基于多个事件输出结果(当前事件+当前状态值) (2)有状态计 ...

  3. 【每日一题】【List与Array互转】【工具类的使用】2021年12月10日-56. 合并区间

    以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] .请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入 ...

  4. go操作Kfaka

    目录 1. Kafka介绍 1.1.1. Kafka是什么 1.1.2. Kafka的特点 1.1.3. 常用的场景 1.1.4. Kafka中包含以下基础概念 1.1.5. 消息 1.1.6. 消息 ...

  5. 10分钟看懂Docker和K8S,docker k8s 区别

    10分钟看懂Docker和K8S,docker k8s 区别 2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫"dotCloud"的公司. 这家公司主要提供基于PaaS的 ...

  6. node-sass报错(Node Sass could not find a binding for your current environment)

    解决方案:参考 https://stackoverflow.com/questions/37986800/node-sass-couldnt-find-a-binding-for-your-curre ...

  7. ATM购物车项目总结

    目录 项目实现思路 ATM项目 优先实现功能 拆分函数 项目路径展示 项目启动文件 start.py 配置文件 setting.py 日志配置字典 日志函数 展示层 src.py 用户注册 获取用户输 ...

  8. [OpenCV实战]22 使用EigenFaces进行人脸重建

    目录 1 背景 1.1 什么是EigenFaces? 1.2 坐标的变化 2 面部重建 2.1 计算新面部图像的PCA权重 2.2 使用EigenFaces进行面部重建 3 参考 在这篇文章中,我们将 ...

  9. 题解 CF1579G Minimal Coverage

    CF1579G Minimal Coverage dp好题! link to the problem 解法 首先需要观察到:如果最长线段的长度为\(maxL\),那么答案不可能超过\(2maxL\) ...

  10. 安装部署Java项目

    开头:之前做了个文档转换的小项目,想部署在安卓手机上,自己可以随时看看,所以才有了下面这篇文章,内容或有瑕疵,望请批正.文末放我自己部署文档转换网址,仅供大家参考,谢谢! 选择:Termux 还是 L ...