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