您好, 访客   登录/注册

基于K3s的边缘计算在泛在电力物联网的技术研究

来源:用户上传      作者:

  摘  要:基于泛在电力物联网设备,借助K3s技术提供了应用创建管理、编排手段结合系统本身实现资源的动态扩容,资源调度技术,实现了加入边缘计算设备这种在靠近物或数据源头的最近的一侧,采用网络、计算、存储、应用、编排等核心能力为一体的资源编排平台,就近提供最近端服务编排的技术能力。
  关键词:电力  容器  物联网  K3s  Kubernete  容器  边缘计算
  中图分类号:TM74    文献标识码:A 文章编号:1672-3791(2019)12(a)-0011-03
  Abstract: Based on the equipment of ubiquitous power Internet of things, K3s technology provides the means of application creation, management and arrangement, and realizes the dynamic expansion of resources in combination with the system itself. Resource scheduling technology realizes the addition of edge computing equipment, which is on the nearest side near the object or data source, using network, calculation, storage, application and arrangement. Resource orchestration platform, which integrates core competence and other core competencies, provides the technical capability of nearest service orchestration.
  Key Words: Power; Containers; Internet of Things; k3s; Kubernetes; Edge Computing
  目前,随着电力市场的快速启动及智能电网的推广,电力系统的业务发展目前来看已经非常迅速,因此这也使得电力调度运行所需的数据变得越来越大,云技术、Docker技术、Edge计算、IoT物联网和区块链的兴起,将它们应用到电力行业中,已成为未来电力行业的发展重要方向。
  云技术是指在公网或局域网内将软硬件、网络、存储等系列资源统一管理起来,实现数据的计算、储存、处理和共享的一种资源管理技术。Docker技术、虚拟化技术、容器编排技术Kubernetes已经成为被大家广泛认可的系统资源共享方式,Docker技术可以在按需构建系统应用实例的过程当中为软件系统管理员提供极大的便利性和灵活性,更为系统带来高效的运维能力。
  边缘计算是指在靠近需要监控数据的源头,采用网络资源、计算资源、存储资源、应用核心能力为一体的开放平台系统,就近提供数据处理服务和统计服务。在这个系统中应用程序在边缘端直接执行,因此可以产生更快的网络服务响应,可以极大地满足行业在实时业务方面的基本需求。边缘计算位于物理实体资源和工业连接之间。而在云中,用户仍然可以通过Web界面的方式访问边缘计算的历史记录数据。
  物联网是以海量的微型设备为基础(如便宜的树莓派arm设备)、结合传统应用与新兴的应用软件的全球性网络服务系统,它将是继计算机通信网络技术、互联网技术与移动互联网技术之后,再一次给全球信息产业带来一次科技浪潮,给高速、信息化、便利的生活带来了一次极大的市场机遇。
  K3s是一种精简的Kubernetes容器管理平台,它保留了大部分K8s的功能,并为了适应边缘计算的极端工作条件,大大地简化了系统部署过程和系统资源的消耗。
  为此,论文提出一种将基于K3s的边缘计算在泛在电力物联网的方法。以Docker技术、K3s平台、物联网技术和边缘计算为基础并能融合Arm等硬件设备,有望实现在市场前景非常广阔的泛在电力物联網的业务中实现资源快速和有效的管理,并能提供安全、稳定、灵活、海量的边端Arm设备的在线管理。
  1  Kubernetes容器编排工具
  首先,Kubernetes是谷歌公司开源的容器资源编排和管理工具,主要分4个部分简要说明一下。
  首先,Kubernetes是一个最近几年才出现的基于容器技术的分布式架构技术解决方案。这个方案虽然刚出来没有几年的时间,但它是Google公司十几年以来大规模编排、应用、调度容器技术的重要技术成果。目的是实现资源的高度自动化部署,以及实现跨多个数据中心的资源利用率的最大化。
  其次,如果我们的系统架构设计遵循了Kubernetes的设计思路,那么传统软件架构中那些和普通业务没有关联的底层代码或插件模块,都可以立即从我们的设计思路中消失,我们不用再费心于负载均衡器LB的选型(软件或者硬件)和部署实施、运维问题,不必再考虑引入或开发一个非常复杂的服务治理框架,不必再关心服务的监控和故障的处理模块的功能开发。总之,使用Kubernetes提供的容器编排技术,我们不仅节省了不少于40%的开发成本,还可以将剩余的主要精力集中于业务本身而不是框架中,而且由于Kubernetes供了强大的自动化部署、编排、监控、事件机制等技术,因此系统后期运维的难度和成本都要大幅度降低。
  再次,Kubernetes是一个开源的软件开发平台。与J2EE不同的是,它不局限于任何一种编程语言,更没有限定任何编程接口,所以不论是用PHP,Java、Go Lang、C++还是用Python编写的Web服务、后台服务,都可以被映射为Kubernetes的Service服务,并可以设置是不是可以通过标准的TCP通信协议进行交互(如采用ClusterPort、NodePort方式)。此外,Kubernetes平台对现有的编程语言的环境、编程框架的选择、中间件的服务没有任何侵入性修改,因此现有的软件系统也很容易进行改造升级和制作镜像,并迁移到Kubernetes平台上进行部署。   最后,Kubernetes是一个功能齐全的分布式软件系统支撑平台。Kubernetes具有完善的集群管理能力,包括多种安全防护和准入机制、多租户(Name Space)应用支撑能力、非常透明的节点服务注册机制和节点发现机制,自带智能负载均衡器,并提供强大的故障自我发现和修复能力、提供的服务滚动升级(Deployment)和在线扩容(Scale)能力、可扩展的资源自动调度机制(Auto Scale),以及多粒度的CPU、MEM资源配额管理能力(Request、Limit)。
  当了解了Kubernetes功能之后,我们使用Kubernetes会得到哪些好处呢?
  首先,可以非常轻松地开发一个复杂的软件系统。以前可能需要很多人(其中可能还需要一些软件架构工程师)一起分工协作和技术架构设计,从而实现和运维的分布式软件系统,在采用Kubernetes集群管理平台解决方案之后,有可能只需几个人甚至一个人的小团队就能轻松应对。在这个小团队里,可能现在只需一名软件架构工程师负责系统中系统服务组件的架构方面的设计,几名软件开发工程师负责功能业务代码的开发,一名系统运维工程师负责Kubernetes集群管理平台的部署和运维,因为Kubernetes集群管理平台已经帮我们做了很多,我们只需要使用好此平台即可。
  其次,我们可以全面、快速、灵活地拥抱微服务架构。目前微服务架构的核心是将一个巨大的单体应用根据一定逻辑分解为很多小的互相连接的微服务,每一个微服务可能由一个或多个实例副本进行支撑,而副本的数量还可以随着系统的负荷变化而自动地进行调整。微服务架构使得每一个服务都可以作为独立单元进行独立开发、升级迭代和扩展,因此微服务架构的系统具备很高的系统稳定性和软件快速迭代开发能力,使开发者更加可以自由选择开发技术。
  再次,可以随时随地将软件系统整体部署到公有云上。Kubernetes最初的设计目的是让更多的用户的应用可以运行在Google自家的公有云服务中,华为,阿里以及腾讯先后宣布支持Kubernetes集群管理平台,未来会有更多的公有云公司和私有云公司支持Kubernetes平台。同时,在Kubernetes的系统架构方案中对底层网络的细节是完全透明的,基于服务(Service)的虚拟IP地址(Cluster IP)的设计思路让系统架构与底层的硬件拓扑无关,因此我们无须改变运行期的文件配置,就能将现有的应用系统从当前物理机的环境快速迁移到公有云或私有云系统上。
  然后,Kubernetes平臺自带的服务弹性负载均衡机制可以让我们非常轻松应对突发流量(重大节日、周末等)。在服务运行峰期,我们可以选择在公有云的平台服务中快速扩容某些服务的实例副本数量以提升系统的吞吐容量,这样不仅大大节省了公司的硬件投人,而且还能改善用户体验。比如现在中国铁路的12306购票系统,在客流高峰期(如节假日、周末)就租用了阿里云进行流量分流。
  最后,Kubernetes平台超强的资源横向扩容能力可以让我们的服务竞争力大大提升。对于互联网公司来说,用户规模等价于公司的命脉,因此横向资源扩容能力是衡量一个互联网业务系统竞争的非常重要的指标。我们利用Kubernetes提供的系统平台,不用修改任何代码,就能将一个Kubernetes集群从只包含几个节点的小集群平滑扩展到拥有上百个节点的大集群,甚至可以在线完成集群扩容任务。而且只要微服务架构设计得合理,更能够在云环境中进行负载均衡和弹性伸缩,系统自然而然地就能够承受大量用户同时并发访问带来的巨大的流量压力。
  2  K3s轻量级Kubernetes工具
  K3s是一个轻量级的Kubernetes集群,它是Rancher Lab公司开发的一个新的产品,目的是在资源非常有限的设备上面跑Kubernetes。它的最大特点就是小,二进制包只有不到50MB,只需要0.5GB的内存就能运行起来。K3s主要的应用在Edge边缘计算,IoT物联网,CI持续集成和运行在ARM架构上等场景,ARM架构方面比如在树莓派上面就能跑。
  K3s的工作原理介绍如下:K3s其实可以看成是一个精简版的Kubernetes,例如它把所有非正式功能都去掉了,所有在开发的storage driver功能、plugin插件等也去掉了,所以整个二进制可执行文件编译出来会变的非常小。K3s对宿主机的操作系统的依赖几乎很少。K3s已经使用了containerd进程替换Docker服务来做runtime,所以我们可以不再安装Docker。只需要保留containerd即可。containerd本身就是Docker的一部分,因此完全兼容我们所熟悉的Docker image。
  K3s主要特点简单介绍如下。
  (1)精简。
  “K3s”的名称含义是指“5 Less Than K8s”,它的二进制大小、对宿主机资源的需求、安装复杂度、使用难度等都极其的轻量和易于使用。
  (2)适用于众多场景。
  对于制造业、零售、电力、电信、金融、公共事业、银行等行业。或是任何认可K8s是管理边缘计算的理想平台,但难以在边缘设备中尤其arm设备中投入大量的物理资源来运行一个完整的Kubernetes平台的用户而言,K3s都是具有巨大进步意义的,对于整个边缘计算平台而言更是一个创造性新产品。
  (3)支持ARM设备。
  目前缘设备是以ARM设备居多。K3s被打包为一个没有任何主机依赖的单个二进制文件,大小只有不到50M,却包含运行Kubernetes所需的一切runtime环境,包括容器runtime环境和任何重要的主机实用软件程序,如socat、iptables、du等。只需要执行一条命令,您就可以轻松配置或者快速升级单节点K3s集群,或是向集群添加更多的节点。非常低的资源消耗,而且操作简单,易于上手,以及最终的删繁就简的理念,加上最重要的、创造性地满足Kubernetes在edge边缘计算的场景需求,让K3s刚推出来就受到了众多互联网企业,尤其开源用户、IT媒体、技术社区等的关注以及肯定。
  3  结语
  随着电力物联网需求的不断出现,将Kubernetes编排技术移植到edge边缘计算场景是个非常好的选择,Kubernetes拥有很好的生态系统,利用Docker技术能够天然屏蔽硬件差异,带来软件部署管理上的极大便捷。Docker容器技术尤其是谷歌公司开源的Kubernetes在数据中心层面愈发成熟,但是因为边缘计算的特点,将完整的Kubernetes移植到边缘计算场景,目前来看还是存在诸多问题,比如目前K8S是不支持arm设备的。而且对计算资源的消耗尤其是内存是边缘设备无法承受的,并且边缘设备目前是以ARM架构居多。而这些正是K3s的当初设计的初衷并且解决的问题。
  参考文献
  [1] 佚名.边缘计算产业联盟正式成立[J].智慧工厂,2016(11):28.
  [2] 张建敏,谢伟良,杨峰义,等.移动边缘计算技术及其本地分流方案[J].电信科学,2016,32(7):132-139.
  [3] 高宇,陶宏才.基于Kubernetes的微服务业务拓扑发现及业务评价[J].成都信息工程大学学报,2019,34(3):223-227.
  [4] 张城城.基于Docker的容器集群管理平台的研究与实现[D].北京邮电大学,2019.
  [5] 盛乐标,游伟倩,张予倩,等.Kubernetes集群的高可用与负载均衡设计[J].电子技术与软件工程,2019(7):1-3.
  [6] 郭建伟.部署和管理Kubernetes集群[J].网络安全和信息化,2019(2):72-76.
  [7] 王骏翔,郭磊.基于Kubernetes和Docker技术的企业级容器云平台解决方案[J].上海船舶运输科学研究所学报,2018,41(3):51-57.
转载注明来源:https://www.xzbu.com/8/view-15125389.htm