AICon日程100%就绪,9折倒计时最后一周 了解详情
写点什么

阿里云容器如何实现 1000Pod/min 一键启动

  • 2022-04-20
  • 本文字数:3965 字

    阅读完需:约 13 分钟

阿里云容器如何实现 1000Pod/min 一键启动

嘉宾| 王凌志

 

随着云原生和容器编排技术的发展,阿里云容器服务 Kubernetes 版受到越来越多用户的青睐,但同时也存在非常多的问题,例如弹性、安全、稳定、运维等。面对这些问题,阿里云是如何思考的呢?在 QCon 全球软件开发大会(2021)北京站上,阿里云高级技术专家王志凌分享了阿里云在 Serverless 容器场景下的探索和实践。我们整理了他的演讲,以期帮你更好地使用容器服务。(下文以王志凌老师第一人称叙述)

 

容器用户的痛点与挑战

云上的容器企业用户可分为四类:共振型、毛刺型、混部型、平稳型, 如下图所示:

 


共振型各业务间存在关联,流量增长后各业务对资源的诉求同时增长,需要极致的弹性能力,如微博热点话题、电商大促、泛互联网行业流量高峰等。

 

毛刺型需短时间内创建海量资源,运行后释放所创资源,需极致的库存和弹性能力,常见于离线型业务,如大数据计算任务、Job 任务、AI 仿真任务等。

 

混部型拥有多个业务,不同业务不同时间段对算力要求不同,优先级不同,存在多部门业务资源争抢问题 ,如白天为在线服务高峰期,晚上为离线 Job 型业务高峰。此外,多家企业部署在同一个 Kubernetes 上还存在容器逃逸的数据安全和攻击应对问题。

 

平稳型业务此处暂不赘述。

 

综上所述,云上容器用户的痛点我们整体上可以归纳为五类:弹性能力不足;成本和资源无法平衡;安全性不足;容灾、稳定性能力不足;性能或异构管理复杂度过高。这些痛点阿里云是如何解决的呢?

 

阿里云 Serverless 容器实例技术内幕

如下图右侧所示:容器实例的资源形态(以阿里云为例)即为一个 Elastic Container Instance 中包含一个 Pod,Pod 中包含多个容器。

 


容器实例在和 Kubernetes 结合时,可实现完整的资源供给,在普通 Kubernetes 中,可实现 Node 资源的弹性扩充。

 

下图为两个容器实例的例子:

 


左图为容器实例单实例模拟实验。一条命令即可起一个单容器实例。如图中为 eci run 5 兆带宽的 nginx,一条命令后便起了一个拥有 5 兆公网带宽可使用 eci 进入的 nginx 实例。其操作和传统 Docker 大同小异。

 

右图为容器实例本地集成的例子。如图所示,在笔记本上安装 mini Kubernetes,同时安装 Virtual Node 将资源调度指定到 Virtual Node 上,即可一键创建出数万核资源。

 

阿里云容器实例的整体架构

阿里云容器本身定义在 PaaS 层上,但是容器实例定义在 IaaS 层上,和云服务器 ECS 同基础设施层。

 


这是由于容器均处于单租户模式下,而容器实例处于多租户模式下。多租户模式意味着需准备计算资源、存储资源、网络资源等等,所以容器实例专注的不是容器交付本身,而是以容器所需的基础设施资源交付为重点。

 

阿里云容器实例复用了阿里基础设施的计算、网络、存储相关架构。具体来说,计算采用神龙物理机,网络采用洛神 2.0,存储采用盘古。

 

阿里云打通了 IaaS 层全栈的日志采集和监控报警。其中日志采集采用了两类特征学习:一类通过提取故障特征实现了故障预测及硬件故障预警等,若发现预警可将服务器或容器热迁移到其他物理机上;另一类特征针对用户业务,下文会详述。

 

此外,阿里云为用户预留了内部运维或故障迁移的热迁移时间。

 

Serverless 容器的架构演进

 


2018 年,阿里云容器实例最初为 on ECS 架构,开容器实例时需开大量 ECS 、建 ECS 资源池。演进后,ECI 和 ECS 均混部在物理机上,共享物理集群和库存。

 

业界容器实例安全沙箱实现很多,常见的在物理机上安装 Kubernetes 后 runv 即可实现,但在多租户模式下,业界的 runv 模式均只考虑了资源隔离性,未考虑数据安全性。阿里云采用自研的安全沙箱“袋鼠”,结合重构了 Containerd 中 image 和 volume 相关的实现,最终保证了用户数据界限在其安全沙箱内部。

 

通过混部容器实例,可复用服务器库存,解决产品库存供给能力的问题,也便于进行全局的资源管理、使用统一基础设施存储与网络、复用 VM 资源强隔离机制、复用 VM 稳定性运维能力进行故障预测恢复和 Pod 级别热迁移,另外也提供了支持 Pod 级别 SLA 能力。

 

异构与 Pod 级别 SLA

开发常常抱怨运维提供的资源能力不足,本质上是缺乏 SLA 保证。Node 购买时可保证其 SLA,但是开多个 Pod 后就难以保证了。为此阿里云在并池基础上实现了 Pod 级别的 SLA 保证。



阿里内部的达摩院语音、自动驾驶、钉钉视频,均严格按照 SLA 机制使用 Pod,即定义相应的规格,开发向运维提资源需求时必须使用约定的规格数据。该规格对服务器来说代表 CPU 主频、PPS、网卡队列等,对云盘来说代表 bps、iops。

 

SLA 下沉到 Pod 级别,还可实现大规模的异构资源管理。大型公司业务种类繁多,包括 GPU 模式、计算密集型、网络密集型等,但在一个集群中指定不同 SLA 规格 Node 的异构资源管理相当复杂,若每种异构架均构建一个独立集群,运维必将苦不堪言。实现了 Pod 级别 SLA 后,运维完全不需要关心集群级别异构特性,业务可在一个集群中自主指定所需异构模型。

 

1000Pod/min 启动实现:软硬全栈优化



阿里云的 Sandbox 包含负责轻量化管理的 Agent、自定 Container 和轻量级、虚拟化的安全沙箱三部分。

 

弹性效率依赖于控制面。在控制面上,阿里云实现了预热、资源复用、网络存储预热、镜像缓存、全链路轻量化、用户特征提取等。

 

资源复用即前文提及的通过以用户业务为特征的学习机制筛选某些用户行为,如频繁创建释放大量资源等,针对性实现资源层面的复用。

 

Serverless 下用户无法提前在 Node 节点上预热镜像。但多数用户的镜像和存储均在云上,同时无论是何处创建容器都需拉镜像,因此阿里云打通了基础设施存储跟容器镜像 cache 能力。用户不必拉镜像即可直接使用镜像,通过镜像 cache、nydus 按需读取和 P2P 模式三种方式,实现一秒 start 超大镜像。

 

安全容器架构

在安全方面,阿里云采用的自研安全沙箱体系如下图所示:

 


该体系运行时分为三种模式:runc、rund、rune。runc 运行在单租户模式下;rund 完全隔离类似开源的 runv;rune 为安全 runtime。

 

阿里云在引擎层通过加速、高并发,轻量化提高了资源供给效率,实现了单安全沙箱启动 200 ms 左右。

 

具体来说,在网络上采用了 eBPF,提高自身网络性能的同时为用户提供 Mesh 透明拦截或监控的能力;在存储上一方面打通本地临时存储和块存储,避免中间协议转换,另一方面采用 copy-on-write 机制,防止同机器的容器、容器镜像重复拷贝。

 

在安全上,第一,通过加密形态的全链路通道(包括物理机打入的流量)解决了安全通道问题;第二,基于 TPM(Trust platform model)实现了硬盘数据加密,第三,通过英特尔 SGX 衍生出的 Inclavare Containers 模式保证了容器内存数据的安全。该模式软硬一体,如下图所示:

 


阿里云容器实例经典使用场景

Serverless Kubernetes 架构实践

Serverless 容器实例最常见的模式为全 Serverless 形态,可自定义虚拟节点或虚拟集群,适用于一个虚拟集群即为一个可用区,或定制某个虚拟集群为特殊规格资源等的情况。

 


已广泛使用 Kubernetes 购买了多台服务器的公司,可采用自有 Kubernetes+ECI 的模式,日常时在现有物理节点上启动 longrun 类型的任务,极致利用已有 CPU,高峰期时使用虚拟节点扩容。



该方案以标准 Provider 模式交付,用户不存在平台成本,无论在自己的 IDC 或任何云上均可迁移;创建的 Pod 全局打散,可消除单 Pod 宕机后的影响;一个虚拟节点可代表数几百万核甚至上千万核的资源,无需扩容即可保证高峰期容量。

 

此外,若用虚拟机形态或裸金属形态做 Node,需先购买服务器或裸金属(图中红色)才能开 Pod(图中蓝色),在 Serverless 形态可只开 Pod,经济效益显著

 


实践一:钉钉 100 万核资源实践

疫情时期,由于学生上课和在家办公,钉钉的资源被极致利用。第一波疫情时,钉钉用服务器扩容物理 Node,拉通众多团队,花费了 48 小时才扩了 100 万核资源。

 

这让钉钉意识到资源供给效率的重要性。因此去年钉钉从传统服务器形态演进到完全 Serverless Kubernetes 形态。演进后,压测到 100 万核只需 30 分钟,且这 30 分钟还包括了业务初始化时间。

 


此处关键在于,在服务器形态时需先扩充物理节点(部分需要特殊的初始化),扩完后再创 Pod。

 

实践二:成本与资源平衡

下图为某司极致按需使用 GPU 的时序图:

 


图中第一步为非推理任务,第二步为推理任务,第三步又为非推理任务。此时,多数用户会选择直接创建 GPU,如此便浪费了第一步第三步的资源。阿里云支持用户在 runtime 时动态 attach GPU,跑完其业务后再释放 GPU。

 

多数用户在做蓝绿发布时,可能需准备 2 倍机器专门用作发布。在 Serverless 下,如已有 1 万核资源,可再用 Serverless Pod 创建 1 万核资源。发布时将服务切到 Serverless 上运行,运行正常后再部署到 Node 上,随后释放 Serverless 资源即可。如此可节省大量成本。



未来预测

根据现状,可预测云原生和 Serverless 未来热点如下:

  1. Serverless 持续火爆发展;

  2. 混合云实现标准化;

  3. 弹性按需付费;

  4. 实现 Pod 级别 SLA。

 

嘉宾介绍

王凌志,10 年基础设施研发经验,2015 年加入阿里云弹性计算团队,致力于基础设施相关研发,2018 年参与并主导了新一代 Serverless 基础设施产品 ECI 研发工作。目前产品专注于为使用容器企业用户提供免运维、高弹性,以容器为粒度的安全基础设施,助力企业以更高的效率、更敏捷的资源供给思维轻松应对在线业务波峰低谷。

 

外部链接

模拟实验:CLI 体验单容器实例:单实例实验

模拟实验:本地自建 k8s,云上轻松扩容 1 万核资源实践:k8s集群弹ECI实验

Inclavare containers 开源代码:https://github.com/alibaba/inclavare-containers

 

活动推荐

2022 年 6 月,ArchSummit 全球架构师峰会(北京)即将落地,会议设置微服务治理之基础架构、LakeHouse 架构演进与数据治理实践、高可用、高并发架构设计、架构能力输出、数据处理与技术管理优化架构等技术等 20 个方向,邀请美团、阿里、腾讯、字节、微软、华为、B 站、车好多等知名公司一线技术专家现场分享其业务实践与落地经验。大会日常已上线官网,现场门票火热售卖中,感兴趣的同学可扫描图中二维码了解详情。



2022-04-20 10:115288

评论

发布
暂无评论
发现更多内容

淘宝商品详情API:挖掘实时数据金矿,点燃电商增长引擎

Noah

海外云手机在跨境外贸中的作用

Ogcloud

云计算 跨境电子商务 跨境电商 电子商务

博睿数据参与支持2023年度证券期货业标准研究课题获评“优秀”

博睿数据

数据库产品层出不穷,金融行业如何选择?|FCon 专访

SelectDB

数据库 大数据 数据仓库 数据分析 apache doris

速度与稳定性的完美结合:深入横测ToDesk、TeamViewer和AnyDesk

阿Q说代码

远程办公 ToDesk TeamViewer AnyDesk

云原生的实践探索和深入学习

Geek-yan

海外云手机怎么帮助您运营facebook?

Ogcloud

云计算 facebook 弹性云手机 手机云服务

MongoDB中的分布式集群架构

EquatorCoco

分布式 索引 db 集群架构

虾皮商品评论接口(Shopee.item_review)|虾皮API接口指南

tbapi

shopee API 虾皮商品评论接口 虾皮商品评价接口 虾皮评论接口 shopee 商品评论接口

Tower for Mac注册激活版下载(强大的Git客户端)

iMac小白

Integrity Plus for Mac:数据完整性校验的得力助手

iMac小白

SecureFX for Mac(ftp文件传输工具)附注册码 v9.4.3破解激活版

mac

苹果mac Windows软件 SecureFX 文件传输客户端

华为云Astro,让业务专家秒变“技术大拿”

华为云PaaS服务小智

低代码 华为云

热热热!开放原子开发者大会议题征集火爆!

开放原子开源基金会

Java 开源 程序员 开发者 算法

Scrutiny for Mac v12.8.3激活版:网页开发人员的得力助手

iMac小白

精细经营:为 Web3 游戏长期卓越奠定基石

Footprint Analytics

区块链 Web3 游戏 加密攻略

权威认可,天翼云云原生一体机iStack斩获“2023云原生企业TOP50”第一名

编程猫

现在大火的低代码是什么?有哪些优势?

高端章鱼哥

低代码开发 应用程序 JNPF

“基于inBuilder低代码平台开源社区版的应用开发”创新赛获奖队伍公示

inBuilder低代码平台

Luminar Neo for Mac(AI技术图像编辑软件) 1.17.0完美激活版

mac

Luminar Neo 苹果mac Windows软件 AI技术图像编辑软件

千万用户的人群过滤,做好这几个点,竟然支持亿级流量

Geek_j8uecm

架构 后端 高并发

在极狐GitLab 上使用 DVC 实现简单机器学习

极狐GitLab

Machine Learning MLOps

SecureCRT for Mac:实现安全稳定的远程工作

iMac小白

Apache Doris 在某工商信息商业查询平台的湖仓一体建设实践

SelectDB

数据库 大数据 数据仓库 数据分析 apache doris

一文教你提高写代码效率,程序员别错过!

伤感汤姆布利柏

效率 程序员 敏捷开发 低代码

叮,你有一份来自2023开放原子开发者大会的邀请函,请查收!

开放原子开源基金会

Java 开源 程序员 开发者 算法

一分钟了解人工神经网络(ANN)

小魏写代码

使用TikTok云手机轻松拓展全球市场

Ogcloud

云计算 TikTok 手机云服务

天猫商品评论数据接口(Tmall.item_review)

tbapi

天猫API接口 天猫商品评论接口 天猫评论接口 天猫商品评论内容接口 天猫评论API接口

「代码舞者」2023开放原子开发者大会——开源大侠秘闻

开放原子开源基金会

开源 开发者 算法

阿里云容器如何实现 1000Pod/min 一键启动_云原生_李慧文_InfoQ精选文章