2019年阿里云上海峰会,由阿里云智能高级技术专家黄玉奇、阿里云智能技术专家吴龙辉共同讲述了基于边缘容器的阿里云CDN云原生实践, 演讲内容涵盖了边缘容器的背景和趋势,Edge@ACK的能力、架构,以及基于边缘容器构建阿里云CDN的云原生体系的详细过程,期望能够给听众带来了一场“使用阿里云容器服务打造云边端一体基础设施”的分享。
视频直播回放
云原生专场PPT下载
以下为精彩视频内容整理:
边缘容器的介绍
随着互联网智能终端设备数量的急剧增加,以及5G和物联网时代的到来,传统云计算中心集中存储、计算的模式已经无法满足终端设备对于时效、容量、算力的需求,将云计算的能力下沉到边缘侧、设备侧,并通过中心进行统一交付、运维、管控,将是云计算的重要发展趋势。IDC预计,到2020年全球将有超过500亿的终端与设备联网,超过40%的数据要在网络边缘侧进行分析、处理与存储,这对边缘计算提供了充分的场景和想象空间。边缘计算按功能角色主要分为三个部分:
云 – 传统云计算的中心节点,有丰富的云计算产品形态和资源,是边缘计算的管控端,负责全网算力和数据的统一管理、调度、存储。
边 – 云计算的边缘侧,又分为基础设施边缘(Infrastructure Edge)和设备边缘(Device Edge)。基础设施边缘通常位于IDC内,拥有充足的算力和存储容量,和中心有专线或骨干网连接,如CDN节点等;设备边缘通常指非传统IT基础设施的边缘节点,这类资源更靠近设备和数据源,比较常见的一般是数据网关。
端 – 终端设备,如手机、智能家电、各类传感器、摄像头等。
边缘云计算--“云边端一体”
边缘计算目前面临的主要挑战有:
云边端协同:缺少统一的交付、运维、管控标准。
安全:边缘服务和边缘数据的安全风险控制难度较高。
网络:边缘网络的可靠性和带宽限制。
异构资源:对不同硬件架构、硬件规格、通信协议的支持,以及基于异构资源、网络、规模等差异化提供标准统一的服务能力的挑战。
边缘云计算是基于云计算技术的核心和边缘计算的能力,构筑在边缘基础设施之上的云计算平台。云计算上已经具有很成熟的大规模的应用管理及资源管理的能力,希望复用该能力,开展边缘计算的业务,而这也是云边端一体的核心概念;
边缘云要素--标准化
边缘云的五个要素分别为低延时、边缘自制、资源管理、安全性及标准化。其中最关键的要素为标准化,因为在云原生的时代,标准化是云原生要解决的核心问题。标准化可以让用户在基于不同的云资源形态以及不同的云提供商上开展其业务,这正是基于云原生而获取到的标准化的能力,在边缘云里面同样也希望能够做到标准化。此外,标准化的另一个好处是能够在边缘云的场景里面可以很好复用以往在云上构建的能力。
随着边缘云规模越来越壮大,除了标准化之外,资源管理也是急需解决的问题,而减少数据传输,数据在边缘端闭环,则是低时延和安全性的考虑。
云边端--一体化协同
以下作为标准化的一个构想。将标准化的一个云原生能力向边缘端复制,需要分为三个层次:
第一个层次是能够在云端提供标准化的接口、管控能力,或者是标准的云服务和云资源的接入能力。其中我们能够看到kubernetes的身影;
第二个层次是基于CDN的场景和边缘云的基础设施的场景下,能够高效的管理处在整个边缘端的众多资源,其中包括在边缘端应用的效率问题。一个典型的场景是CDN的场景,计算力丰富;第二个典型场景可以理解是边缘云的基础设施,主要是面向物联网IoT的场景,如智慧楼宇、智慧工厂等,其显著的特点是资源和计算力不是特别的丰富,但是分布非常广,总的体量是比较大的。例如一个智慧小区里面有两到三台或者三到五台的边缘节点服务器,用来部署其IoT业务(I o T网管或音视频分析应用等)。
第三层次是典型的IoT场景中的端设备,例如智慧楼宇智能停车设备,环境监测蓝牙设备、人脸识别设备等。基于以上三层的逻辑划分和一些云原生方案,希望能够在云边端打造一体化协同的基础设施。下图展示了云边端一体化协同的基础设施。
Edge@ACK的能力和架构
阿里云容器服务--Edge@ACK
阿里云容器服务最核心的业务就是给终端用户提供标准的K8s的托管服务,主要解决了K8s的升级、扩缩容以及日志监控等运维问题,所有运维的事情都交给阿里云容器服务进行处理。阿里云容器服务核心提供很多垂直领域的K8s的托管服务,比如大数据AI领域,基因领域等托管服务。边缘容器也是基于容器服务的K8s的托管底座推出的。
边缘容器面向边缘计算场景,提供了一个具备边缘能力的K8s的服务,并保留了K8s原生的一致性体验。基于K8s强大的插件机制,边缘容器将很多边缘应用和边缘资源的管理能力通过插件化的形式集成到了边缘K8s里面,且都是非侵入式的,所以可以提供标准的K8s API供上层领域PaaS集成,也可以把边缘的托管K8s提供给终端用户直接使用,还可以很灵活的基于K8s以往的运维经验开展新的边缘计算的业务。Managed K8s托管服务已经打通与阿里云其它云服务的连接,这些能力也是EdgeK8s天然所具备的。
边缘K8s核心的价值点主要有两点:第一是能够支持诸多类型的边缘异构计算资源的接入,包括CDN领域的资源,ENS(边缘节点服务Edge Node Service)资源接入。第二是自有资源的接入,通过云端标准的K8s管理和运维,边缘容器提供便捷的接入体验,执行一条命令即可完成快速接入;
此外,云上的很多创新业务也会向边缘端下沉,给边缘计算赋能。希望通过边缘的K8s做二、三方云产品的下沉通道,使边缘端能够便捷的使用云上产品能力。
Edge@ACK的边缘自制能力
在边缘场景中,边缘的worker节点和云上管控通过公网链路交互,而公网通常是不可靠的,这也是边缘场景的弱网络连接问题;而k8s的设计原则需要管控源源不断的接收到worker节点上报的心跳,作为资源管理和应用调度的依据;而一旦接收不到边缘节点的心跳,并且超过最大容忍时间之后,k8s管控就会对节点上的应用做驱逐处理,这个在边缘场景里面是不可接受的。因此,边缘托管在边缘节点上增加了一个核心组件Edge-Hub
,在断网的情况下替代云端的管控,给边缘节点上所有的agent提供配置数据,保证断网场景下节点自治;
Edge-Hub能够保证Worker节点上的Agent正常运行,但是节点自治除此之外还要保证节点上应用的持续运行;例如,在断网情况下,节点或者应用重启需要能够保证应用元信息不变,例如保证Pod的IP不变。这些都是边缘容器在k8s体系下做的边缘场景适配。
当然,业界也有很多其他边缘自治方案,包括将整个K8s管控下沉的办法来解决边缘端的自治;下图为Edge@ACK 边缘自治能力流程图。
阿里云容器服务边缘容器已经正式开始公测,未来还将在边缘容器领域持续发力,包括:基于OpenKruise实现的边缘场景的调度策略和业务模型的封装,以及像函数计算、安全容器等创新业务的落地,等等。
Edge@ACK的落地案例--IoT智慧楼宇
虽然边缘容器的公测时间稍微有些晚,但是在阿里内部已经实施了一年多的时间。最开始支撑的用户是公司内部的IoT团队,主要覆盖一些智慧楼宇、智慧工厂的业务场景,与前面讲到的云边端分层结构吻合,通过边缘K8s构建IoT领域的PaaS,其次把边缘节点接入到边缘集群里面,边缘节点上部署了IoT智能网关等IoT应用来管理整个智慧楼宇设备,也很符合前面讲到的云边端一致性体验的分层结构。下图为阿里云容器服务Edge@ACK的整体框架。
基于边缘容器打造阿里云CDN边缘计算的架构体系
边缘容器除了在IoT做了一些尝试之外,另外一个比较大的场景,就是CDN场景。CDN不仅规模比较大,而且也能锤炼整个边缘集群的稳定性和大规模的服务能力。
CDN是内容分发网络,目前是属于云服务的一个基本件。当一个网站配置了CDN以后,当终端用户访问这个网站的时候,系统可以调度到离用户最近的边缘节点。现在CDN除了传统的图片视频加速以外,已经衍生出视频处理、AI处理、以及边缘计算的业务体系。目前,阿里CDN在全球有超过2500个节点,120T的带宽储备。
CDN的重要性不仅仅在于CDN的业务本身,更重要的是CDN的基础设施属性,它天生具备分布式边缘计算平台特点。CDN节点是全球分布的,随着5G的正式商用,目前来看,CDN的规模最大、算力最强,将成为布局边缘计算最佳的位置。
Apsara Edge Stack技术体系
传统CDN是以内容分发为主的服务形态,随着5G场景对低延时以及新场景的诉求,就需要CDN转变成一个更通用的,包含计算、存储、以及网络传输的通用边缘计算平台。在这个背景下,阿里云已经生产出另一个产品叫ENS,目前该产品已经具备了完整的IaaS能力,用户可以在ENS上购买一台边缘的虚机,以及在虚机里面部署自己的能力。
除了IaaS的工作以外,在资源层级上可以通过容器和ACK来打造PaaS和Serverless的服务能力,整个体系包含底层的IaaS、容器、以及上层的SaaS。下图展示了Apsara Edge Stack的技术体系。
基于Edge@ACK的资源调度
从上文提到的边缘ACK来说,主要是看中容器资源的弹性能力,以及K8s标准化的能力。ACK能够支撑异构资源的接入,包括CDN的物理机和ENS的虚拟机都可以直接接入到ACK里面,我们把所有的CDN以及一部分的ENS接入到ACK进行资源的整合。CDN和ENS的节点是全球分布的,策略上主要根据业务类型和区域,在阿里云的中心机房创建ACK的Master服务,然后就近把边缘节点接入到ACK Master中。
目前的规划是一个ACK接入20~30个边缘机房,全网会部署100多个ACK集群,然后在ACK之上,我们会构建PaaS,PaaS的一个主要能力就是多K8S集群邦联,同时把容器调度跟CDN的流量调度打通的。
基于Edge@ACK的中台管控
当把资源接到ACK以后,就要开始部署业务,部署业务是管控运维的能力。CDN已经具备了比较完整的发布运维的体系,针对容器本身的特点需要做一些增强。
除了上述介绍的基于边缘ACK本身的边缘自治的能力之外,另外CDN自有的内容分发的管道能力是能够实现秒级全网节点的数据分发和同步,基于这个能力,目前可以用这个通道下发一些业务的配置,以及针对容器下发一些指令。
另外一个问题是怎样将镜像高效的分发到各个节点呢?首先会在每个机房内去部署一个Mirror镜像仓库,通知配置CDN本身的加速实现全球镜像分发。基于数据管控、镜像通道及管控通道,我们能够保证业务在CDN的环境上快速的DevOps。下图为基于Edge Kuberentes的中台管控流程图。
CDN边缘节点架构升级
将CDN原有的服务与整个云原生的体系打通,策略上跟中心机房的业务没有本质的区别,过程是容器化接入到K8s以后,把里面通用的一些能力API化,通过Servicemesh提供出去。目的是将CDN的资源和能力充分的利用起来,在云原生的背景之下提供创新服务,这种创新服务包括刚刚公测上线的可编程的CDN,所谓可编程CDN,是指通过CDN边缘脚本EdgeScript,可以用简单易学的语法实现CDN复杂配置,快速构建CDN个性化业务体系并进行敏捷的业务迭代。目前,EdgeScript已经支持定制化鉴权、缓存控制、请求头/响应头控制、A/BTesting、改写/重定向和限速等应用场景,这也将是未来重要的发展方向,欢迎大家来申请公测。
同时,也可以在CDN的环境上去部署像函数计算等的Serverless业务、将CDN原有的缓存服务通过API给到函数计算串接起来。下图展示了CDN边缘节点的架构升级。
基于Edge@ACK的边缘计算体系
原来阿里云CDN已经是一个完整的边缘生态,其中有供应链的管理,以及一些中台的能力。在这个基础之上,现在通过边缘容器以及ACK云原生的能力,打通上下游,实现能力的串通,支撑边缘计算业务爆发。下图为基于Edge@ACK的CDN边缘计算体系