摘要:为保证高速公路上门架系统的落地项目的成功落地,选择K8s和KubeEdge来进行整体的应用和边缘节点管理。

一、项目背景

本项目是在高速公路ETC联网和推动取消省界收费站的大前提下,门架系统的落地,也就是要把门架部署在覆盖全国范围的高速公路上,收集车辆通行的牌示信息,以及相应的交易信息。

整体的情况是在边缘侧,即高速公路上会部署大量的门架和相应的控制器,相应的边缘终端,这些终端大概10万台,其上部署了相关的应用以收集相关信息。超过50万个应用部署到边缘节点,收集到信息后,通过收费专网向省中心以及路网中心上传对应的数据。

本次项目的工作挑战主要有两个方面:

将近10万台异构设备的管理,包括arm,x86等异构设备。

50余万个应用的生命周期管理

为保证项目的成功落地,我们对整体架构做了选型,最终选择了K8s和KubeEdge来进行整体的应用和边缘节点管理。

二、为什么选择Kubernetes

在项目里,虽然说是部署在边缘侧的应用,但它的复杂程度已经和云上是类似的了,在边缘侧部署的应用已经是由很多个微服务组成的。所以Kubernetes对于支撑这种微服务化的、云原生化的应用部署和大规模管理的能力,同样也适用于这个项目在边缘侧的使用。

具体来说,有一些典型的部署需求:

  • 双机热备
  • 多机多活互备
  • 有关联的应用同节点部署以提升应用间交互效率
  • 同一应用的不同实例跨节点部署以提升可用性
  • 依据边缘节点的不同属性将应用部署于不同分组中
  • 定义独立于节点的应用部署以及实现满足条件的新边缘节点上线后自动安装应用

这些需求,用K8s的这些Deployment、Pod、ReplicaSet、DaemonSet等核心对象来表示,是非常适合的。所以我们就选择了Kubernetes。

当然,还有一些重要的边缘侧特有的需求是原生的Kubernetes不具备的,但Kubernetes的架构是非常好的,易于扩展,灵活性很高,可以基于原生Kubernetes架构基础,根据边缘管理的特殊需求进行扩展。

三、为什么选择KubeEdge

一是业务自身的特点来决定的。这个业务的量非常大,涉及的边缘节点分布在全国各地,所以它的边缘侧是多硬件架构、多厂家的,我们需要异构的支持; 边缘工控机低至4核ARM SOC、1G可用内存,我们需要低资源占用的方案来管理边缘侧的节点;管理运维复杂,从路网中心到最终路段,分为6级管理层次,管理成本高,我们需要高集成度边缘的方案,让边缘足够简单,把出问题的概率降到最低,降低运维成本。

二是从边缘环境的特点来看的。从网络的角度来看,网络分为部省、省站两层,多次转发,我们需要边缘接入具有高灵活性,可支持专线、代理、公网、有线和无线接入等多种方式;各地基础设施的建设不同,有些省份的网络带宽低至3M,我们需要边缘和云之间的管理带宽占用降到最低;有些高速公路上的网络条件是非常差的,经常出现断网的情况。我们需要边缘方案有离线自治的能力。

四、整体方案

接下来我会把整体方案打开成几层来分别介绍。

应用部署

首先是应用部署,就像我刚才说的,在边缘侧要部署的业务非常复杂,它是由多个微服务所构成的云原生化的架构。所以我们这些微服务以及中间件都容器化之后可以非常好的适应各种不同的异构操作系统,方便统一管理。

如下图所示,微服务架构分成前端和后端,前端主要把业务通过Deployment的方式部署到门架上,与后端之间是通过EdgeMesh实现的。通过这种服务发现的方式,实现微服务前后端业务的通信。而后端业务容器本身是无状态的,可以通过Deployment来部署。

后面的Redis包括MySql就可以通过Statefulset的方式来进行部署。通过这样的部署模型,我们可以很完美的进行封装和自动化管理高可用的边缘侧的整套业务系统。

但如果仅仅是用原生的K8s部署方式,并不能完全满足我们的需求,因为在项目里要部署的量非常大,左图的环境只是应用于一个收费站,而一个路段要管理几百上千个收费站,逐个部署成本过高。所以我们基于K8s之上又构建了一个任务工作流的引擎系统,把每一个部署微服务的步骤定义为一个job。用批量的方式大量、快速部署成百上千个同样的微服务系统和环境。

大规模节点接入

除了上面提到的挑战,在应对大规模节点接入的情况下也遇见过一些问题:

每个省有自己的管理权限,我们按K8s集群的配置配了多个K8s集群来进行管理,一个省对应一个K8s集群,然后在K8s之上通过统一的管理层处理复杂跨集群数据统计等操作,从中心侧管理每个省的边缘侧,这就是多集群的管理手段。

我们曾遇见一种现象,路网中心或省中心做网络升级等动作之后,网络有时候会出现问题,所有省的边缘节点,失去与K8s的连接,等网络恢复之后,又会发生所有节点同时连接中心侧的K8s集群,引起大量的并发连接,对中心侧的系统造成冲击,导致应用异常。为了应对这种情况,我们通过动态退避算法缓解节点同时接入所形成的流量冲击。

需要精简NodeStatus和PodStatus上报的信息。就前文所提到的,各地基础设施的建设不同,有些省份的网络带宽低至3M,所以我们需要减小状态信息的大小,降低上报流量的冲击,降低对网络的影响。

镜像仓库Mirror分级加速,有效降低了对网络的冲击,提高大批量部署的部署效率。

边缘业务高可用

接下来的是边缘业务高可用,按照原生K8s的升级状态,它会先删除旧版本Pod,再创建新Pod并在这个过程中去拉取新版本镜像。这种操作在公有云网络条件较好的情况下,是没太大问题的。但在边缘侧,这样就会造成业务长时间的中断,收费数据缺失。所以针对这一个流程,我们也是做了相应的升级和优化。

我们先把升级下载镜像的通知下发做预下载,下载成功之后再删除已有的旧Pod,启动新应用,优化了应用升级对服务中断的时间的影响,将业务升级时整体业务中断的时间从分钟级缩减到了10s内。

同时,考虑到边缘设备有主备部署的情况,而边缘侧又不像云上有ELB服务。我们又在边缘节点中容器化部署了Keepalived,通过VIP,为门架的摄像头等设备提供对应的K8s集群内的容器服务。

五、总结

当前基于KubeEdge的边缘管理系统管理着全国29个省、市 、自治区的将近100,000个边缘节点,超过500,000边缘应用的部署。支撑了高速公路门架业务的不断调整、更新,满足了每日3亿条以上的信息采集。

为日后车路协同、自动驾驶等创新业务的发展提供了良好的平台支撑。

K8s提供的通用部署和调度模型很适合部署大规模边缘应用。

单纯原生K8s不能满足边缘侧业务的所有需求,KubeEdge集成K8s云原生管理能力,同时对边缘业务部署和管理提供了很好的支持。

本文分享自华为云社区《如何使用Kubernetes管理中国高速公路上的10万边缘节点?》,原文作者:技术火炬手。

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

看KubeEdge携手K8S,如何管理中国高速公路上的10万边缘节点相关推荐

  1. 如何使用Kubernetes管理中国高速公路上的10万边缘节点?

    导读:在 KubeCon 2020 线上峰会,张琦与董晓龙共同分享了使用 Kubernetes 和 KubeEdge 管理高速公路 10 万个边缘节点这样场景和规模下的成功实践.董晓龙是北京数软科技公 ...

  2. 学习管理!!中国历史上最经典的7个智慧案例

    学习管理!!中国历史上最经典的7个智慧案例 http://ike.126.com 中国历史悠久,各种人才智慧的学说纷呈,而人才智慧的典范更是举不胜举.中国是一个智慧大成的民族,人才智慧的经典案例,让人 ...

  3. k8s包管理器helm_eShopOnContainers 知多少[10]:部署到 K8S | AKS

    1. 引言 断断续续,感觉这个系列又要半途而废了.趁着假期,赶紧再更一篇,介绍下如何将eShopOnContainers部署到K8S上,进而实现大家常说的微服务上云. 2. 先了解下 Helm 读过我 ...

  4. 通过Kubernetes安全高效管理边缘节点,ACK@Edge年度重磅发布

    简介:拓展Kubernetes边界,ACK@Edge新增边缘节点安全互联与精细化管控.业内首发,ACK@Edge支持高质量加密网络与精细化管理. ACK@Edge通过Kubernetes实现云边端协同 ...

  5. 中国高速公路运营里程、高速公路投资规模及重点企业发展现状分析[图]

    一.高速公路行业发展概况 高速公路,是指专门用于汽车高速行驶的公路,其定义在不同国家或地区.不同时代.不同科学领域有不同的规定.根据我国<公路工程技术标准>(JTG B01-2014),高 ...

  6. 全球及中国高速公路行业运营管理模式与经营效益分析报告2022版

    全球及中国高速公路行业运营管理模式与经营效益分析报告2022版 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订日期]:2021年11月 [搜索 ...

  7. 万级规模 K8s 如何管理?蚂蚁双11核心技术公开

    阿里妹导读:Kubernetes 大幅降低了容器化应用部署的门槛,并以其超前的设计理念和优秀的技术架构,在容器编排领域拔得头筹.越来越多的公司开始在生产环境部署实践.本文将分享蚂蚁金服是如何有效可靠地 ...

  8. k8s边缘节点_边缘计算,如何啃下集群管理这块硬骨头?

    导读 边缘计算平台,旨在将边缘端靠近数据源的计算单元纳入到中心云,实现集中管理,将云服务部署其上,及时响应终端请求. 然而,成千上万的边缘节点散布于各地,例如银行网点.车载节点等,节点数量甚至可能是几 ...

  9. [Azure] 使用 Visual Studio 2013 管理中国版 Azure 订阅

    比较关心微软平台技术的朋友应该都知道,微软云服务(Microsoft Azure)以下简称Azure分为全球版和中国版,由于政府法规问题中国版的服务是由二十一世纪互联运营,整体来看中国版Azure和全 ...

最新文章

  1. python基本语法-Python语法基础50题
  2. Java实现MD5加密和文件校验
  3. php opcodevld,利用PHP扩张vld查看PHP opcode
  4. python输入input数组_Python学习——实现简单的交互raw_input的使用
  5. Java-标识符和关键字
  6. 在日本做开发的日子(工作篇 序)
  7. 安装uwsgi报错:error linking uWSGI解决方法
  8. fiddler如何显示IP地址栏?
  9. OpenCV图像处理基础操作(2)
  10. CentOS 6.2 mini安装桌面环境
  11. hightopo|海上作业平台的三维可视化场景
  12. 人人都可以参与开源!龙蜥社区最不容错过的开发者活动来了
  13. Windows NT引导过程源代码分析(一)
  14. Day17——整数矩阵及其运算
  15. python strftime时分秒_python如何把秒换成时分秒
  16. img 格式相互转换 url, base64,blob, file
  17. C++第一话---->初识C++及命名空间
  18. mysql/Java服务端对emoji(utf8mb4编码)的支持有关的问题
  19. 北师大1903计算机在线答案,[南开大学(本部)]20秋学期(1709、1803、1809、1903、1909、2003、2009 )《程序设计基础(下)》在线作业-2...
  20. 自动生成图片及修改图片尺寸

热门文章

  1. Bootstrap 滚动监听Scrollspy 调用方式
  2. es6 为什么修饰器不能用于函数
  3. Vrep脚本的执行顺序
  4. 非局域网情况下ROS开发利器——Husarnet
  5. 视觉SLAM笔记(18) Sophus
  6. python自编信息加密函数_自定义Python加密算法
  7. 10.11.5 brew mysql_mac os10.11下安装MySQLdb
  8. pb 选中树形菜单节点_动态绑定树形菜单,并搜索节点展开
  9. php把视频剪辑成15秒一段,如何快速分割视频 一个视频或一个电影截取变成几份的功能 一段段截取 太累了...
  10. python子进程进行kinit认证_使用kafka-python客户端进行kafka kerberos认证