【学习KubeEdge】


1 边缘计算

1.1 边缘计算的由来

  • 万物互联时代快速到来,无线网络普及:网络边缘的设备数量、产生的数据快速增长。
  • 集中式的数据库中心(包括公有云服务)将面临实时性、带宽、能耗、数据隐私的挑战。面向边缘设备所产生海量数据计算的边缘计算模型应运而生。

1.2 边缘计算价值

联接的广泛性

  • 广泛地域的低成本联接
  • 可移动、按需部署的联接
  • 多制式、多协议的稳定可靠联接
  • 边缘设备间互联

数据带宽优化

  • 本地数据库预处理,减少传输带宽需求
  • 数据的分布式计算与存储
  • 本地数据缓存(如CDN

有限的自治性

  • 业务本地自治,保障业务可用性
  • 数据处理、机器学习、深度学习等AI能力在边缘运行
  • 联接控制,自动智能运算和决策

业务的实时性

  • E2E(端到端)业务时延<10ms
  • AI增量学习,实时更新模型

安全与隐私保护

  • 设备安全
  • 网络安全
  • 数据安全
  • 应用安全

补充:

CDN: Content Distribute Network: 内容分发网络,或者,Content Delivery Network:内容交付网络。CDN就是采用更多的缓存服务器(CDN边缘节点),布放在用户访问相对集中的地区或网络中。当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求。

1.3 推动边缘计算发展的缘由

低时延: 为满足低时延的要求,靠近业务现场的边缘构建解决方案,减少业务处理时延

海量数据 物联网时代边缘数据爆炸性增长,全部上云成本昂贵,数据在本地进行分析和过滤,节省带宽

隐私安全 数据涉及企业生产和经营活动安全,在边缘处理企业保密信息和个人隐私

本地自治 不依赖云端的离线处理能力和自我恢复能力


2 基于Kubernetes边缘计算平台

2.1 kubernetes

  • Kubernetes是一个全新的基于容器技术的分布式架构领先方案。是Google内部集群管理系统Borg的一个开源版本。
  • Kubernetes是一个开放的开发平台。不局限于任何一种语言,没有限定任何编程接口。是一个完备的分布式系统支撑平台。
  • 俗称K8S,因其单词较长且k和s之间有8个字母而成k8s。

2.2 kubernetes的一些基本概念:

  • Pod

– 应用实例,一组功能相关的Container的封装
– 共享存储和Network Namespace
– K8S调度和作业运行的基本单位(Scheduler调度,Kubelet运行)

  • Workloads(Deployment,StatefulSet,DaemonSet,Job…)

– 应用的部署模型,一组功能相关的Pod的封装

  • Service,Ingress

– 应用的访问方式,Pod“防失联”
– 给一组Pod设置反向代理

  • Persistent Volume

– 应用、存储分离,独立于Pod生命周期的存储卷

  • Configmap,Secret

– 部署配置分离

2.3 kubernetes架构

kubernetes架构

设计理念:

  • 只有API server可以访问etcd(是一个高度一致的分布式键值存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。它可以优雅地处理网络分区期间的领导者选举,即使在领导者节点中也可以容忍机器故障。)
  • 组件通过API Server访问集群状态
  • API采用声明式设计(低敏感性的)
  • API对象彼此互补、可组合
  • 优先使用事件监听而不是轮询

2.3 基于Kubernetes边缘计算平台的优劣

优势:

  • 容器化应用封装

–Build once,run anywhere(一次构建,处处运行)
– 轻量化基础镜像,降低资源占用

  • 通用的应用抽象定义

– 业界事实标准
– 云上、边缘统一管理

  • 松耦合的架构

– 易扩展的API框架
– 易于定制平台组件

劣势:

  • 资源有限

– 往往很少

  • 网络受限

– 私网,带宽有限,延迟高

  • 边缘如何离线自治

–网络不稳,随时可能离线
– 离线状态下,边缘应用继续工作

  • 设备接入和管理

– 缺少设备抽象


3 KubeEdge

3.1 概念

  • KubeEdge是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于kubernetes构建,并为网络应用程序提供基础架构支持。云和边缘之间的部署和元数据同步。
  • 100%兼容K8S API,可以使用K8S API原语管理边缘节点和设备。KubeEdge 还支持 MQTT 协议,允许开发人员编写客户逻辑,并在边缘端启用设备通信的资源约束。

补充:

MQTT:

  • MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。
  • MQTT最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。
  • 作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

3.2 KubeEdge项目

KubeEdge致力于将Kubernetes的能力扩展到边缘:

– 业界首个边缘容器平台项目
– Apache 2.0协议
– 2019年3月捐给CNCF(云原生计算基金会)基金会
– K8S IoT Edge WG参考架构
– 基于Kubernetes构建,100%兼容K8S API
– 6个特性版本,最新版本为v1.1.0

核心理念:

  • 云边协同

– 双向多路复用消息通道,支持边缘节点位于私有网络
– Websocket+消息封装,大幅减少通信压力,高时延下仍可正常工作

  • 边缘离线自治

– 节点元数据持久化,实现节点级离线自治
– 节点故障恢复无需List-watch,降低网络压力,快速ready

  • 极致轻量

– 重组Kubelet(Kubernetes集群中每个节点的代理)功能模块,极致轻量化(~10mb内存占用,移除内嵌存储驱动,通过CSI接入)
– 支持CRI集成Containerd、CRI-O,优化runtime资源消耗

补充:

  • List-watch

– List-watch 是 K8S 统一的异步消息处理机制,保证了消息的实时性,可靠性,顺序性,性能等等,为声明式风格的API 奠定了良好的基础,它是优雅的通信方式,是 K8S 架构的精髓。
– 但也是由于它需要较优的网络条件,导致KubeEdge遗弃它(边缘端的网络条件不能保证)

  • CSI

– 是衡量信道情况的信道状态信息(Channel State Information)。CSI代表着通信链路的传播特性,它描述信道中散射,衰落,功率衰减等等多种效应的联合影响(信道状态信息说白了就是传播路上的路况)。
– 获取CSI的方式称为信道估计。
– CSI分为两种,发射机侧的和接收机侧的(路况有出门前得到的,以及到达后的,显然出门前获得的重要)。
– 获得发射机侧的CSI,可以采用功率分配,波束赋形,天线选择等等手段提前补偿这些衰减(发现路况不好可以在出门前采取措施)。
– 有两种CSI,一种是暂态的CSI,一种是统计上的CSI。
– CSI获得的前提是先有信道模型。y=飞鸽传书(x), 鸽子的负重,飞行所需时间,迷路概率,路上被人烤了吃的概率等等就是csi。

  • Containerd

– Containerd 是一个工业级标准的容器运行时(Container Runtime Interface),它强调简单性、健壮性和可移植性。Containerd 可以在宿主机中管理完整的容器生命周期:容器镜像的传输和存储、容器的执行和管理、存储和网络等

  • CRI-O

– CRI-O项目的开始是为了创建专用于Kubernetes的最小可维护运行时
– CRI-O是一个社区驱动的开源项目,由Red Hat,Intel,SUSE,Hyper,IBM等公司的维护者和贡献者开发。 它的名称来自CRI和OCI,因为该项目的目标是使用基于OCI的标准组件来实现Kubernetes CRI

3.2 KubeEdge架构

kubeedge的架构分为三层。分别是云(Cloud)、边(Edge)、端(Device)。云是控制面,边是边缘节点,而端就是端侧设备。

KubeEdge架构

3.2.1 KubeEdge云端组件

KubeEdge云端组件

云端直接将K8S的master节点拿来使用,连接master组件的叫CloudCore。CloudCore与K8S的master进行连接并可以通过CloudHub对Edge进行通信。在CloudHub中EdgeController实现对边缘端的控制和将边缘端返回的信息转化为K8S的master能读懂的格式(从而进行),而DeviceController则是对边缘设备进行控制。

  • EdgeController

– 边缘端节点管理
– 应用状态元数据边云协同

  • 设备抽象API/DeviceController

– 接入和管理边缘设备
– 设备元数据云边协同

  • CSI Driver

– 同步存储数据到边缘

  • Admission Webhook

– Kubernetes的准入控制器(扩展API合法性校验)
针对不同场景下边端离线行为(网络不佳、自行离线等行为),对应用是否迁移进行判断(后期用户可通过相应场景自行选择是否开启此判断)

3.2.2 KubeEdge边缘组件

图一:
KubeEdge边缘组件

图二:
KubeEdge边缘组件
图二比图一多一个边与边的通信组件:EdgeMesh

  • EdgeHub

– Messaging over WebSocket提供可靠的云边信息同步

  • MetaManager

– 元数据(边端组件的一些配置信息、请求云端后返回的数据等)本地持久化(类似于一个CDN服务
– 实现边端节点离线自治的关键

  • Edged

– Kubelet-lite(是运行在边缘节点的代理,用于管理容器化的应用程序)
– 轻量化实现Pod生命周期(重新开发的轻量化 Kubelet,实现 Pod,Volume,Node 等 Kubernetes 资源对象的生命周期管理)

  • DeviceTwin

– 同步设备信息(终端设备的配置文件,例如json文件)到云端
– 为应用程序提供查询设备状态的接口

  • EventBus

– MQTT client(是一个与 MQTT 服务器(mosquitto)交互的 MQTT 客户端,为其他组件提供订阅和发布功能)

  • ServiceBus

– HTTP client(是一个运行在边缘的HTTP客户端,接受来自云上服务的请求,与运行在边缘端的HTTP服务器交互,提供了云上服务通过HTTP协议访问边缘端HTTP服务器的能力。)

EdgeMesh 的存在可以使得边缘与边缘之间互联互通和边缘向云端(单向)互通。
– EdgeMesh-proxy负责边缘侧流量转发
– 边缘内置域名解析能力,不依赖中心dns
– 支持L4,L7流量治理
– 支持跨越边云一致的服务发现和访问体验
– 使用标准的istio进行服务治理控制
– P2P技术跨子网通信

补充:
L4,L7:

四层负载均衡和七层负载均衡(点击跳转)

istio:

连接、安全加固、控制和观察服务的开放平台(点击跳转)

P2P:

P2P是peer-to-peer的简称,又称为点对点技术,是没有中心服务器、依靠用户群节点进行信息交换的对等式网络。区别于传统的C/S中央服务器结构,P2P网络中每一个用户节点即是客户端又是服务端,能同时作为服务器给其他节点提供服务。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值