本案例由Rancher投递并参与评选,CSDN云计算独家全网首发;更多关于【云+X 案例征集】的相关信息,点击了解详情丨挖掘展现更多优秀案例,为不同行业领域带来启迪,进而推动整个“云+行业”的健康发展。

随着国家政策的导向,互联网基础设施的普及,工业、能源行业的智能化改造已经进行的如火如荼,传统行业的特点是信息化、智能化水平严重落后于其他行业,在进行信息化、智能化改造的过程中,首先第一步,就是要获取底层系统的全方位的数据。

为此,需要部署大量的边缘设备来采集数据、分析数据,通过这些数据进行建模,大量的边缘设备一般离散的分布在不同机房、厂区、甚至是不同的地理区域,这对运维人员来讲是令人恐惧的事情,维护这些设备,管理其上运行的应用变得极其困难。

全应科技是国内第一批投身于工业互联网改革浪潮中一员,因此上面提到的问题,也是其面临的问题。全应科技从一开始就采用了微服务化的开发模式,除了平台框架核心应用之外,所有应用都是可插拔的微服务。

与业务平台不同的是,边缘设备具有下面的特点:

  • 数量大,动辄有数十台、数百台设备;

  • 单点故障影响小,一个设备只负责一小块区域的数据采集、分析与计算,因此单台设备的故障导致的局部数据的缺失,数据分析层面也进行了数据清洗,因此,单点故障对全局业务影响不大。

需求 

对于运维角色来讲:

  • 管理这些边缘设备,保持边缘设备上运行的服务的高可用性;

  • 快速的上线、升级

  • 配置的快速更改与应用

逻辑拓扑图

下面的图形简单描述了项目基础设施层的拓扑:

其中,每一个边缘侧设备上运行的业务会和中枢业务系统通讯,边缘侧所有设备在单独的一个网络平面中。

运维方案选型

在决定运维方式时,考虑过下面的几种方式:

Ansible

我们在边缘侧设备上运行的应用大部分都是纯Java应用,再加上一部分Python应用,因此部署和启动非常简单,外加上supervisord应用实现了应用的基本高可用方案。在公司还没有进行容器化转型之前,我们采用传统的部署形式部署微服务,就是配置好宿主机的系统环境,直接将应用部署在宿主机系统上,在这种情况下,我们只需要解决的问题是大批量设备部署和维护的问题,因为不管是部署还是更新升级、配置,所有边缘侧使用Ansible可以较好的满足这一条件。

但是这种方法也有缺点,需要维护一套甚至多套ansible playbook,边缘侧设备所在的网络条件比较差,异常状况也比较差,经常掉电重启或者断网,使用ansible 容易造成各个节点的配置不同步。

kubeedge

kubeedge是由华为基于kubernetes开发并开源,专门用于边缘容器编排的运维方案,其基本架构如下:

从上面的架构图中可以看到,kubeedge实现了一个边缘侧完整的框架,对我们公司来讲,我们自行实现了例如“DeviceTwin”、“EventBus”、“ServiceBus”以及基于MQTT收发消息。因此:

  1. 一部分组件与kubeedge重叠了;

  2. 部署不方便,kubeedge要求在各个节点上以kubeadmin部署kubernetes集群(0.6版本,现在已经更新至1.1版本,不知道现在是否有更简便快捷的形式),对网络环境不好的边缘侧设备有较大难度;

  3. kubeedge组件与kubernetes组件基本一致,对于边缘设备寸土寸金的资源来说,不太友好。

通过实践,第2点和第3点原因直接打消了我采用kubeedge的念头。

K3s

去除了k8s中的一些实验特性、非必须的组件,例如云厂商的驱动、存储插件,k3s在默认状态下只会启动除自身进程之外的两个应用:

coredns:提供集群内部的DNS解析服务。

  • traefik:ingress controller的角色。

  • k3s server默认使用本地(已集成)的sqllite作为后端数据存储,通讯效率更高一些。

占用资源少:k3s默认使用containerd(server节点,不可更改)作为容器运行时,不在需要中间层的docker engine,占用资源更少。

部署简单:对环境依赖少,可离线也可在线部署(不过国内的网络环境不推荐在线部署。),离线部署时,只需要下载一个大约40MB的二进制文件和一个200MB不到的离线镜像包,启动k3s节点几乎是秒级的。

上手无代价:

  • 使用k3s与kubernetes习惯完全一致,对于使用kubernetes的人来讲使用k3s没有任何代价;

  • 支持部署helm tiller服务端(尽管tiller端会在helm 3.x版本中被干掉),直接使用原有charts部署应用无障碍;

扩缩容方便:增删节点极其方便,几乎是分钟以内就可以完成;

兼容arm架构设备:对于部分有此种类型的设备的集群友好。

k3s架构图

k3s集群的所有数据存储在server(master)节点本地的SQLite数据库中,当然也支持存储在诸如MySQL、etcd中,都是支持按照需求在部署节点时选择配置的。server节点与agent节点之间采用tunnel隧道通信,增强了安全性,同时也提升了效率。agent与server节点即使断开网络连接,也不影响相互各自的业务。

因此通过上面的对比和实践验证,决定采用k3s来管理边缘设备集群。

完整的运维架构图

使用Rancher管理k3s集群

在Rancher上添加一个集群,然后按照步骤将该集群导入到Rancher平台中,可以使用Rancher管理和维护集群:

挖掘优秀案例,启迪各行各业,推动“云+行业”健康发展。 CSDN云计算第二阶段云+X 案例征集火热报名中

云+X案例展 | 传播类:k3s基于逾百台工控机的应用实践相关推荐

  1. 云+X案例展 | 传播类:南方报业数据中台建设,助力“智媒”飞跃发展

    本案例由百分点投递并参与评选,CSDN云计算独家全网首发:更多关于[云+X 案例征集]的相关信息,点击了解详情丨挖掘展现更多优秀案例,为不同行业领域带来启迪,进而推动整个"云+行业" ...

  2. 云+X案例展 | 传播类:九州云 SD-WAN 携手上海电信,助力政企客户网络重构换新颜...

    戳蓝字"CSDN云计算"关注我们哦! 本案例由九州云投递并参与评选,CSDN云计算独家全网首发:更多关于[云+X 案例征集]的相关信息,点击阅读原文丨挖掘展现更多优秀案例,为不同行 ...

  3. 云+X案例展 | 传播类:九州云 SD-WAN 携手上海电信,助力政企客户网络重构 换新颜

    本案例由九州云腾投递并参与评选,CSDN云计算独家全网首发:更多关于[云+X 案例征集]的相关信息,点击了解详情丨挖掘展现更多优秀案例,为不同行业领域带来启迪,进而推动整个"云+行业&quo ...

  4. 云+X案例展 | 民生类:基于AWS PaaS构建基础集团企业级中台

    本案例由浪潮投递并参与评选,CSDN云计算独家全网首发:更多关于[云+X 案例征集]的相关信息,点击了解详情丨挖掘展现更多优秀案例,为不同行业领域带来启迪,进而推动整个"云+行业" ...

  5. 云+X案例展 | 传播类:富通云腾加速联通云数字化转型步伐

    本案例由富通云腾投递并参与评选,CSDN云计算独家全网首发:更多关于[云+X 案例征集]的相关信息,点击了解详情丨挖掘展现更多优秀案例,为不同行业领域带来启迪,进而推动整个"云+行业&quo ...

  6. 云+X案例展 | 民生类:肯耐珂萨入围腾讯SaaS加速器首期成员名单

    本案例由肯耐珂萨投递并参与评选,CSDN云计算独家全网首发:更多关于[云+X 案例征集]的相关信息,点击了解详情丨挖掘展现更多优秀案例,为不同行业领域带来启迪,进而推动整个"云+行业&quo ...

  7. 云+X案例展 | 民生类:必创科技助力打造智慧城市

    本案例由必创科技投递并参与评选,CSDN云计算独家全网首发:更多关于[云+X 案例征集]的相关信息,点击了解详情丨挖掘展现更多优秀案例,为不同行业领域带来启迪,进而推动整个"云+行业&quo ...

  8. 云+X案例展 | 民生类:中国电信天翼云携手国家天文台打造“大国重器”

    本案例由天翼云投递并参与评选,CSDN云计算独家全网首发:更多关于[云+X 案例征集]的相关信息,点击了解详情丨挖掘展现更多优秀案例,为不同行业领域带来启迪,进而推动整个"云+行业" ...

  9. 云+X案例展 | 民生类: “中企通信 × TutorABC”共创全球数字教育科技新里程

    本案例由中企通信投递并参与评选,CSDN云计算独家全网首发:更多关于[云+X 案例征集]的相关信息,点击了解详情丨挖掘展现更多优秀案例,为不同行业领域带来启迪,进而推动整个"云+行业&quo ...

最新文章

  1. flask 渲染 vue 打包后的dist文件(直接用后端渲染)
  2. 将jpg图像转换成yuv420p格式
  3. 【C++】C++0x :: Introduction to some amazing features
  4. JS-[IIFE闭包]
  5. shell实现压缩多个文件
  6. 博文视点大讲堂35期《Google Android创赢路线与产品开发实战》读者见面会
  7. MySQL常用函数之聚合函数
  8. 【字节码插桩】Android 签名机制 ( 生成 Android 签名文件 | 分析签名文件 | 签名文件两个密码的作用 | 三种签名方式 )
  9. 超星尔雅不让下载?课件,拿来吧你!
  10. Spring Security Oauth2 JWT、第三方登录、单点登录讲解,并使用Oauth2.0结合微服务进行单点登录
  11. 删除右键菜单中的 “上传到wps云文档”
  12. shiro的受权管理
  13. ExecuteSQL
  14. python中close_python close()是什么?python close()定义及用法详解
  15. 我乐网关停1月套牢2亿风投
  16. Pro 了,更强了 — 米家台灯 Pro 评测
  17. Android 恢复出厂设置流程分析
  18. JVM架构、JVM垃圾回收机制、垃圾回收算法、垃圾回收器、JMM(内存模型)
  19. 什么是Tableau(BI工具)
  20. python网络编程【二】(使用TCP)

热门文章

  1. python中type用法_Python中type的用法
  2. c语言程序综合实习学生成绩,C语言程序设计综合实习报告
  3. mysql 日期类型比价_MySQL 日期时间类型怎么选?
  4. python将excel导入mysql_Python将Excel数据自动导入MySQL,python,实现,excel,到,中
  5. 北航教授吐槽研究生基本废了:985高校成高级蓝翔
  6. 数学也浪漫 数学的几句贴心话
  7. mysql源码安装报错_mysql 的二进制和源码包 安装的报错总结
  8. python列表有固定大小吗_如何在python中创建固定大小的列表?
  9. Canal Mysql binlog 同步至 Hbase ES
  10. 这样才是代码管理和 Commit 的正确姿势 | 研发效能提升36计