阿里云 CDN 业务基于边缘容器的云原生转型实践
导读:本文基于边缘容器的阿里云 CDN 云原生实践, 涵盖了边缘容器的背景和趋势,边缘托管集群 ACK Managed Edge K8s(文中简称“Edge@ACK”) 的能力、架构,以及基于边缘容器构建阿里云 CDN 的云原生体系的详细过程,期望与读者分享使用阿里云容器服务打造云边端一体基础设施过程中的体会。
文章整理自 2019 年阿里云上海峰会,阿里云智能高级技术专家黄玉奇、阿里云智能技术专家吴龙辉演讲。“阿里巴巴云原生”公众号后台回复“724",可 获得云原生专场全部 PPT。
边缘容器的介绍
随着互联网智能终端设备数量的急剧增加,以及 5G 和物联网时代的到来,传统云计算中心集中存储、计算的模式已经无法满足终端设备对于时效、容量、算力的需求。将云计算的能力下沉到边缘侧、设备侧,并通过中心进行统一交付、运维、管控,将是云计算的重要发展趋势。
IDC 预计,到 2020 年全球将有超过 500 亿的终端与设备联网,超过 40% 的数据要在网络边缘侧进行分析、处理与存储,这对边缘计算提供了充分的场景和想象空间。边缘计算按功能角色主要分为三个部分:
- 云 – 传统云计算的中心节点,有丰富的云计算产品形态和资源,是边缘计算的管控端,负责全网算力和数据的统一管理、调度、存储;
- 边 – 云计算的边缘侧,又分为基础设施边缘 (Infrastructure Edge) 和设备边缘 (Device Edge)。基础设施边缘通常位于 IDC 内,拥有充足的算力和存储容量,和中心有专线或骨干网连接,如 CDN 节点等;设备边缘通常指非传统 IT 基础设施的边缘节点,这类资源更靠近设备和数据源,比较常见的一般是数据网关;
- 端 – 终端设备,如手机、智能家电、各类传感器、摄像头等。
边缘云计算--“云边端一体”
边缘计算目前面临的主要挑战有:
- 云边端协同:缺少统一的交付、运维、管控标准;
- 安全:边缘服务和边缘数据的安全风险控制难度较高;
- 网络:边缘网络的可靠性和带宽限制;
- 异构资源:对不同硬件架构、硬件规格、通信协议的支持,以及基于异构资源、网络、规模等差异化提供标准统一的服务能力的挑战。
边缘云计算是基于云计算技术的核心和边缘计算的能力,构筑在边缘基础设施之上的云计算平台。云计算上已经具有很成熟的大规模的应用管理及资源管理的能力,希望复用该能力,开展边缘计算的业务,而这也是云边端一体的核心概念。
边缘云要素--标准化
边缘云的五个要素分别为低延时、边缘自治、资源管理、安全性及标准化。其中最关键的要素为标准化,因为在云原生时代,标准化是云原生要解决的核心问题。
标准化可以让用户在基于不同的云资源形态以及不同的云提供商上开展其业务,这正是基于云原生而获取到的标准化的能力,在边缘云里面同样也希望能够做到标准化。此外,标准化的另一个好处是能够在边缘云的场景里面可以很好复用以往在云上构建的能力。
随着边缘云规模越来越壮大,除了标准化之外,资源管理也是急需解决的问题,而减少数据传输,数据在边缘端闭环,则是低时延和安全性的考虑。
云边端--一体化协同
“云边端一体化协同”作为标准化的一个构想,将标准化的一个云原生能力向边缘端复制,需要分为三个层次:
- 第一个层次是能够在云端提供标准化的接口、管控能力,或者是标准的云服务和云资源的接入能力。其中我们能够看到 Kubernetes 的身影;
- 第二个层次是基于 CDN 的场景和边缘云的基础设施的场景下,能够高效的管理处在整个边缘端的众多资源,其中包括在边缘端应用的效率问题。
- 一个典型的场景是 CDN 的场景,计算力丰富;
- 第二个典型场景可以理解是边缘云的基础设施,主要是面向物联网 IoT 的场景,如智慧楼宇、智慧工厂等,其显著的特点是资源和计算力不是特别的丰富,但是分布非常广,总的体量是比较大的。
例如一个智慧小区里面有两到三台或者三到五台的边缘节点服务器,用来部署其 IoT 业务(IoT 网管或音视频分析应用等)。
- 第三层次是典型的 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 边缘计算体系。