OpenYurt,边缘云原生新界面
Posted 边缘计算社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenYurt,边缘云原生新界面相关的知识,希望对你有一定的参考价值。
内容来源:全球边缘计算大会·深圳站
分享嘉宾:阿里云 熊峰
整理编辑:社区贡献者 Janus
出品:边缘计算社区
概述
大家好,我叫熊峰,来自阿里云容器服务边缘容器团队。容器团队主要是用云原生的一些工具、技术、方法论、解决大规模边缘计算场景下的应用分发、部署、运维和管控等问题。
团队打造的阿里云边缘容器服务产品,已经支撑了阿里云内外百万核以上规模的算力和各种各样的业务,在产品演进过程中,我们团队积累了非常多的经验,在2020年5月将阿里实践过程中总结边缘云原生最佳实践回馈给社区,我们开源了业界第一个以无侵入方式延伸原生 Kubernetes到边缘计算的领域的项目——OpenYurt,致力于构建云边一体的边缘云原生解决方案。
边缘计算
什么是边缘计算,业界对于边缘计算的定义都不一致,但核心思想基本是一致的。比如当下比较热门的音视频直播、IOT、在线会议的场景,共同点是工作负载会部署到离终端设备或者靠近最终用户的地方,这样能够获得更低的网络延迟,提升用户的使用体验。这种模式逐渐扩展到汽车、农业、能源、交通等各行各业。
边缘计算的IT架构,有两个比较主流的理论,一个是Gartner基于边缘设备和最终用户的距离视角,分为Near Edge,Far Edge,Cloud三层。另一个是IDC基于算力视角,分为Heavy Edge,Light Edge两层。角度虽然不一样但也有共同点,首先就是分层理念,层与层之间相互依存,相互协作。另外一点就是边缘计算是传统的中心云计算的扩展与补充,二者非但不是孤立的,而且相互不可分割的有机整体。
边缘计算的趋势,从业务的视角来说,未来越来越多的种类,越来越大的规模和越来越复杂的应用和工作负载都会被部署到边缘侧;从架构的视角来说,作为中心云的延伸的,越来越多的应用都是规划在分布式混合云能力之上,这样会对应用架构有一定的要求,比如去中心化分布式架构、边缘自治能力、云端托管需求。从规模的视角来说,会有一些明星的应用,比如在疫情期间的在线教育爆发式的增长,会进一步推动边缘计算的发展。
边缘计算发展,理想是光明远大的,但是现实是比较复杂的。边缘计算在落地的过程中需要解决比较多得问题。平台及技术都在快速发展,但是规模和复杂度也在不断增加,现有的运维、交互的手段很匹配现未来发展的需求。总体来看有四个方面的问题,第一是数据有下沉的需求,云边缘网络通信如何保障。第二,业务和规模的复杂度不断增加,如何快速标准化交付。第三,边缘计算既然是中心云的扩展和补充,肯定不是孤立存在的,云边之间如何去做协同。最后,在边缘计算场景下,异构资源非常常见,怎么样对异构资源做好适配。
云原生
云原生是什么?云原生是一个体系的工具、技术、方法论,他的本质在于本质在于“以利用云计算技术为用户降本增效”。早期因为 Docker 的出现,大量的业务开始容器化、Docker 化。容器化通过统一交付件、隔离性从而带来了 Devops 的快速发展;Kubernetes 的出现让资源编排调度与底层基础设施解耦,应用和资源的管控也开始得心应手,容器编排实现资源编排、高效调度;随后,lstio 为代表的服务网格技术解耦了服务实现与服务治理能力。今天云原生几乎"包罗万象"般的无处不在,越来越多的企业、行业开始拥抱云原生。在传统的中心云场景下,云原生的方式越来越受大家的青睐,很多企业开始拥抱云原生方法论。我们很自然会想到能否将云原生扩展到边缘,构建云边一体的边缘云原生体系?
云边一体的边缘云原生
基于容器技术构建云边一体的边缘云原生技术体系,整体分为三个层次,第一层是云,是传统的中心云计算,也就是管控端;第二层是边,对应的是边缘计算侧的计算能力;第三层是端,指是边缘计算端侧的设备。
在中心(云),我们保留了原汁原味的云原生管控和产品化能力,通过云边管控通道将之下沉到边缘,使海量边缘节点和边缘业务摇身一变成为云原生体系的工作负载,通过服务流量和服务治理更好的和端进行交互;从而完成业务、运维、生态的一体化;而通过边缘云原生,我们可以获得和云上一致的运维体验,更好的隔离性,安全性以从及效率。产品落地就顺师理成章了许多。
OpenYurt
OpenYurt是阿里云2020年5月份发布一个开源项目,是业界第一个以无侵入的方式将Kubernetes扩展到边缘计算领域的项目。2020年9月份正式成为了CNCF Sandbox项目。
OpenYurt的架构整体上由云端、边缘两部分组件,云端和边缘直接通过公网连接。其中蓝色部分是原生Kubernetes的组件,橙色是OpenYurt做的增强扩展。基于 Kubernetes 强大的插件化能力,OpenYurt 实现了对上游kubernetes 的零修改,保证了 OpenYurt 可以及时跟随社区同步演进,也确保和云原生社区主流技术的兼容。
边缘自治
云边交互的通道很可能在弱网条件下,例如当网络断开的情况下,一定时间之后应用可能会被驱逐,这实际上并不是在边缘计算场景下想看到结果。还有当网络断开时,边缘设备发生了重启,没有办法和中心端数据保持通信的情况下如何快速恢复现场,将业务成功的拉起来?为此OpenYurt引入了两个组件:
一个组件是Yurt-Controller-Manager负责在弱网条件下,结合节点的自治状态,智能判断是否要对节点上的工作负载做驱逐;第二个组件是Yurthub,他是一个带有本地缓存的透明代理,会自动将云端数据缓存在本地,一旦网络恢复,将变更快速同步到云端,从而实现边缘测的自治。
云边协同
在应用的部署和运维过程中,用户常常需要获取应用的日志,或直接登录到应用的运行环境中进行调试。在 Kubernetes 环境中,我们通常使用 kubectl log,kubectl exec 等指令来实现这些需求。在 kubectl 请求链路上, kubelet 将扮演服务器端,负责处理由 kube-apiserver(KAS) 转发来的请求,这就要求 KAS 和 kubelet 之间需要存在一条网络通路,允许 KAS 主动访问 kubelet。
然而,边缘节点很多是在相对封闭的线下IDC环境中,云边网络是处于不同平面内的,这里我们通过Yurt-Tunnel-Server和Yurt-Tunnel-Agent两个组件建立了云边反向通道,在每一个边缘节点上会有一个agent,与云端server保持连接。来自云上的运维请求首先会会经过云边之间的反向通道,转给对应的节点,从而实现云边协同能力。
单元化能力
在边缘场景下,边缘节点通常具备很强的区域性、地域性,不同地域的节点间往往存在网络不互通、资源不共享、资源异构等明显的隔离属性。同时相同的应用,相同的镜像,可能需要部署到不同的地域节点中。
而与此同时,由于原生Kubernetes Service 的后端端点扁平分布在集群中任意节点,集群东西向流量可以跨任意节点访问。但是在边缘场景下,跨跃不同分组节点的service流量,会大概率出现访问不可达、或者访问效率低下的问题。
针对以上的场景和问题,Openyurt从三个层面来解决:
节点单元化:节点池NodePool,以节点池视角对不同边缘区域下的主机进行统一管理和运维
应用的单元化:单元化部署UnitedDeployment,使用新的单元化部署模型将用户的工作负载部署在不同的节点池中,业务的实例数,版本都可以按照节点池的维度进行统一管理。
流量的单元化:Service 拓扑,通过简单配置来限制Service后端Endpoint的访问范围,例如只能由相同节点池的节点访问,或者只能本节点访问。
异构资源支持
边缘计算区别于传统中心云计算的一个标志性特征就是计算资源、存储资源种类多样、异构明显。ACK@Edge 目前支持 arm x86 cpu 架构,支持 linux、windows 操作系统,支持将 linux 应用和 windows 应用混合部署,来很好地解决边缘场景资源异构问题。
此外,通过配合阿里云容器镜像服务,提供在边缘场景下的多地域交付能力,能够支持多种云原生制品的多地域交付,包括容器镜像,应用编排资源包等。
业务互联及弹性能力
在边缘计算场景下,云边之间有非常强的互动需求,不仅是在于控制链路,边缘的应用与中心云的应用有非常多的数据交互。通过深度集成云厂商的SD-Wan能力,将边缘和中心内网打通,边缘业务以内网的方式访问VPC的数据或者资源,大大提升云边协同效率和稳定性、安全性;而通过云端资源对接,实现了云上云下的资源弹性互通,提升了边缘场景下的业务弹性能力。
案例
某视频网站案例,通过OpenYurt去管理云上边缘节点,包括线下IDC的机器资源,通过一个集群管理多种异构资源,然后做一些混合编排,整体可以节省50%的成本。充分利用边缘靠近用户中心的特点,优化网络延迟75%左右的效果。
阿里云CDN产品案例,阿里CDN是基于OpenYurt以及商业化产品去管理全球范围内的CDN节点,通过标准Kubernetes API,在上层构建构建自己的能力。同时利用单元化的发布能力,能够快速实现大范围的应用部署实施任务。
某智慧楼宇项目案例。将边缘网关节点作为普通节点接入OpenYurt集群,管理多个智慧楼宇项目资源,业务应用通过集群与各种各样的传感器或者智能设备做交互。同时也很大程度解决了以往现场处理的运维痛点。
全文完。
Ps:
5月15日,边缘计算社区在深圳举办全球边缘计算大会,熊峰老师14日下午4点到大兴机场准备晚上7点的飞机前往深圳,结果受天气影响,机场大面积延误,熊峰老师航班延误至晚上10点,到了晚上10点,开始坐摆渡车,又过了一小时晚上11点,航空公司抱歉通知大家飞机航班取消,大家折返回家。
第二天早上,熊峰老师搭乘最早的飞机从北京飞深圳,结果延误,终于在早上10点起飞,1点多到深圳机场,一到机场立马直奔会场分享! 给阿里人认真的态度点赞!感谢熊峰老师支持!
特别感谢阿里云长期对边缘计算社区的支持!
以上是关于OpenYurt,边缘云原生新界面的主要内容,如果未能解决你的问题,请参考以下文章