摘要:本篇文章将从KubeEdge架构设计理念、KubeEdge代码目录概览、KubeEdge集群部署三方面带大家认识KubeEdge。

KubeEdge即Kube+Edge,顾名思义就是依托K8s的容器编排能力和调度能力,实现云边协同、计算下沉、海量设备的平滑接入。本篇文章将从KubeEdge架构设计理念、KubeEdge代码目录概览、KubeEdge集群部署三方面带大家认识KubeEdge。

KubeEdge架构设计理念

1、Kubernetes的架构

这里是一个经典的K8s架构,K8s相信大家已经了解比较多了,它主要是分为控制面和数据面,而现在K8s的生态已经非常火爆了,关于应用管理和容器管理已经形成了一套标准,这里列举了它的一些优势:

  • 只有API server可以访问etcd
  • 组件通过 API Server 访问集群状态
  • API采用声明式设计
  • API对象彼此互补、可组合
  • 优先使用事件监听而不是轮询

2、基于Kubernetes构建边缘计算的优势与痛点

核心优势主要有4方面:

容器化应用封装现在已经成为应用交付的一个趋势,我可以把我的应用打包到容器里,我只打包一次,可以跑在各种地方,这种如果应用到我们IOT领域,我们传统有很多IOT嵌入式设备,它其实很多硬件和软件强相关的,如果换一个硬件,可能软件就要更改,如果说我这个容器化封装以后,设备可支持容器runtime,我可以将容器跑在任何IOT设备上。

通用应用抽象定义:K8s的API,包括development、pod现在其实在业内已经形成一套标准,大家都比较了解和认可,其实我们基于这些应用做这个平台,大家也更能容易接受。

松耦合架构:它的可扩展性比较好,比如我们基于K8s之上可以通过CRD来定义一些API,像我们通过设备管理CRD来定义一些IOT里device的一些API,到时候我们可以直接通过K8s的一些方式来管理这些设备;还有一些可扩展,比如它的CIA可以对接各种runtime,我们有些边缘节点它的资源非常有限,我们就可以对接一些轻量化的runtime。

其关键痛点有:

1)资源有限

网关设备,128MB内存

K8s集群需要至少1G内存

2)网络不畅

边缘位于私有网络,无公网IP

云边跨越公网,带宽有限,延迟高

K8s的List-watch需要数据中心网络

3)边缘如何离线自治

网络不稳,随时可能离线

边缘业务离线可工作

边缘离线可故障恢复

4)设备接入和管理

缺少边缘设备抽象

缺少边缘设备接入协议支持

3、KubeEdge 架构与核心理念

我们这个架构主要是分了云、边、端三部分,云上边就是我们的控制面,边就是我们的边缘节点,端就是跑了我们的一些端侧设备,云上左边是一个K8s的master,是没有做过改动的原生的K8s控制面,后边我们加了我们的一个组件叫CloudCore,它云上的组件主要是会拿一些K8s控制面上的东西,通过EdgeController和DeviceController做一些处理,然后通过下边的Cloud Hub,Cloud Hub主要是跟边端通信的,边端有个EdgeHub和Cloud Hub通信,然后把数据拿下来。

边端是主要做了一个应用管理和设备管理的能力,应用管理左边会有一个Edged,右边有DeviceTwin、EventBus,分别是应用管理和设备管理,左边有个DataStore,就是我们说的本地自治的能力,比如说我们这应用或者设备的元素从云上分发下来,我们是先把它存到一个数据库里,然后再到它的Edged或者设备里边,这样就能保证云边网络断开或者边缘节点重启了以后我应用的Edged它可以从数据库里把应用源数据拿出来,这样就能保证在故障的情况下业务可以正常恢复。

核心理念:

1)云边可靠协同

双向多路复用消息通道,支持边缘节点位于私有网络

Websocket + 消息封装,大幅减少通信压力,高时延下仍可正常工作

云边消息校验,网络不稳定时不丢数据

2)边缘离线自治

节点元数据持久化,实现节点级离线自治

节点故障恢复无需List-watch,降低网络压力,快速ready

3)边缘极致轻量

重组Kubelet功能模块,极致轻量化(~70mb内存占用)

支持CRI集成Containerd、CRI-O,优化runtime资源消耗

4)边缘设备管理

云端通过Kubernetes API管理边缘Device

4、KubeEdge 社区生态

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

  • 业界首个边缘容器平台项目
  • Apache 2.0协议
  • 2019年3月捐给CNCF基金会
  • 2020年9月晋级为孵化级托管项目
  • K8s IoT Edge WG参考架构
  • 基于Kubernetes构建,100%兼容K8s API
  • 9个特性版本,最新版本为v1.4.0
  • 3100+ Star,810+ Fork,500+贡献者
  • 目前成立Device/IoT与MEC两个SIG
  • 参与社区贡献的企业包括:中国联通,ARM,中国移动,谐云,中国电信,时速云,http://JD.com,浙大SEL实验室,EMQ,InfoBlox,Inovex,Midokura等

KubeEdge代码目录概览

ADOPTERS就是我们社区的一些采纳者,比如说你用了KubeEdge,并且想成为参与者,建议者,你可以提一个PR,把你们写到这个ADOPTER里面去,下面的这些就是代码目录,主要就是cloud(云端)、edge(边缘端)、mappers(接入设备的mapper端),还有OWNERS是我们项目的一些matiner,主要负责核代码,比如你对我们社区贡献比较多,我们可以把你加到OWNERS,帮我们核代码和检视代码。

KubeEdge集群部署

1、KubeEdge 集群部署工具—— keadm

这个是借鉴了K8s的Kubeadm,可以一键部署KubeEdge集群,在部署KubeEdge集群时,要先装一个K8s的master,这个master用任何符合K8s的标准都可以,这个 keadm是基于K8s之上部署KubeEdge系统。

子命令参数:

init:部署云端组件

join:部署边缘端组件

gettoken:从云端获取边缘端启动凭据

reset:重置KubeEdge集群的云端和边缘端

2、KubeEdge 部署 —— 云端

在已经装好的master上装我们的云端,用 init即可:

重要参数:

--kube-config:连接K8s Master的凭据

--advertise-address:签发到边缘证书里的IP地址

3、KubeEdge 部署 —— 边缘端

边缘端主要用我们的join命令:

重要参数:

--token:边缘端启动时访问云端的凭据

--cloudcore-ipport:边缘端访问的云端IP地址

本文分享自华为云社区《KubeEdge架构解读:云原生的边缘计算平台》,原文作者:技术火炬手。

点击关注,第一时间了解华为云新鲜技术~

从架构设计理念到集群部署,全面认识KubeEdge的更多相关文章

  1. Redis集群部署与维护

    Redis集群部署与维护 目录: 一. 集群架构 二. 集群部署 1. 创建redis-cluster目录 2. 编译redis 3. 编辑redis配置文件 4. 配置redis集群 5. redi ...

  2. linux运维、架构之路-Kubernetes集群部署

    一.kubernetes介绍        Kubernetes简称K8s,它是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部 ...

  3. 搭建互联网架构学习--006--duboo准备之zk集群部署安装

    dubbo集群部署安装依赖于zookeeper,所以先安装zookeeper集群. 1.准备三台机器做集群 2.配置 配置java环境  ,2,修改操作系统的/etc/hosts文件,添加IP与主机名 ...

  4. linux运维、架构之路-Kubernetes离线集群部署-无坑

    一.部署环境介绍 1.服务器规划 系统 IP地址 主机名 CPU 内存 CentOS  7.5 192.168.56.11 k8s-node1 2C 2G CentOS  7.5 192.168.56 ...

  5. rabbitMQ集群部署以及集群之间同步

    MQ集群部署 期待的部署架构 其中,一个机房有两台机器部署MQ,并组成集群,有一个机房的MQ集群作为中心集群,其他机房的MQ集群将消息同步到中心MQ集群中. 安装erlang,略.. 安装rabbit ...

  6. Mongodb集群部署ReplicaSet+Sharding -摘自网络

    网上关于三种集群方式的搭建方式很多,都是分开来介绍的.Replica Set (复制集成)主要是做主从库的,但是没法实现负载均衡的效果,真正实现这个的,是Sharding(分片集群),通过数据分布在每 ...

  7. 万台规模下的SDN控制器集群部署实践

    目前在网络世界里,云计算.虚拟化.SDN.NFV这些话题都非常热.今天借这个机会我跟大家一起来一场SDN的深度之旅,从概念一直到实践一直到一些具体的技术. 本次分享分为三个主要部分: SDN & ...

  8. MyCat集群部署(HAProxy + MyCat)

    本文档内容的依赖龙果学院<基于Dubbo的分布式系统架构实战>课程 二.软件版本 操作系统:CentOS-6.6-x86_64 JDK版本:jdk1.7.0_72 HAProxy版本:ha ...

  9. 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  10. 15套java架构师、集群、高可用、高可扩 展、高性能、高并发、性能优化Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...

随机推荐

  1. 详解GuassDB数据库权限命令:GRANT和REVOKE

    本文分享自华为云社区<GuassDB数据库的GRANT & REVOKE>,作者: Gauss松鼠会小助手2 . 一.GaussDB的权限概述 在数据库中,对象的创建者将成为该对象 ...

  2. ASP.NET CORE MVC的一些说明

    1.ASP.NET CORE MVC 是微软公司的Web应用开发框架,结合了MVC架构的高效.简洁等优秀思想并融合了.NET的灵活性. 2.ASP.NET诞生于2002年,当时微软想保持桌面应用程序的 ...

  3. PCA主成分分析的理解

    u     |_matrix1x2_{{-0.70710678118654757};{-0.70710678118654735}} x^(1)    |_matrix1x2_{{-0.51805350 ...

  4. JAVA异常的不正确处理方式

    最近收到一个求助信息,异常堆栈如下: ``` java.lang.RuntimeException: FF1C1005 at test_ssh.sftp.Pool.get(Pool.java:25) ...

  5. 【Android】无法通过drawable下的selector类型改变背景颜色?

    举例 我在darwable目录下创建了selector文件,并设置了如下内容 <?xml version="1.0" encoding="utf-8"?& ...

  6. linux防火墙使用及配置

    Linux防火墙使用及配置 介绍 防火墙是网络安全的重要组成部分,它帮助保护服务器和计算机免受未经授权访问.恶意攻击和各种网络威胁.在Linux系统中,有一些工具和技术可用于设置和配置防火墙,其中最常 ...

  7. 【scikit-learn基础】--『数据加载』之玩具数据集

    机器学习的第一步是准备数据,好的数据能帮助我们加深对机器学习算法的理解. 不管是在学习还是实际工作中,准备数据永远是一个枯燥乏味的步骤.scikit-learn库显然看到了这个痛点,才在它的数据加载子 ...

  8. 如何在cmd中转入其他文件夹

  9. SpringBoot CORS 跨域请求解决方案之配置过滤器

    方式一:@CrossOrigin 方式二: @Configuration public class CorsConfig implements WebMvcConfigurer { @Override ...

  10. 初次认识 Git (v2.x)

    什么是版本控制? 版本控制,也称为源代码控制,是一种跟踪和管理软件代码变更的实践.版本控制系统是软件工具,可帮助软件团队管理源代码随时间推移而发生的变更.随着开发环境的加速,版本控制系统可以帮助软件团 ...