开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

阿里云容器如何实现 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:115335

评论

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

关于数据仓库架构及各组件方案选型

五分钟学大数据

数据仓库 4月月更

[Day8]-[动态规划] 最长公共子序列

方勇(gopher)

LeetCode 动态规划 数据结构与算法、

恒源云(Gpushare)_如何获取实例SSH端口号?技巧大放送7!

恒源云

服务器 终端登录

不想被开巨额罚单?银行需筑起数据安全“护城河”

BeeWorks

众安保险 x StarRocks | 全新实时分析能力开启数字化经营新局面

StarRocks

数据库 StarRocks

每个互联网人才都应该知道的SQL注入!

喀拉峻

网络安全 安全 渗透测试 SQL注入

一文简述:云原生架构的四个特征六个原则

穿过生命散发芬芳

4月月更

面向对象编程,你真正懂吗?

CRMEB

为什么客户体验为王

小炮

客户服务

老项目改造返回值规范化

Rubble

4月日更

模块七作业

blazar

「架构实战营」

模块7作业

Mr小公熊

王者荣耀商城异地多活架构设计

五月雨

架构实战营 「架构实战营」

Redis+Caffeine两级缓存,让访问速度纵享丝滑

Java工程师

Java 数据库 redis 架构 高性能

声网的混沌工程实践

声网

测试 混沌工程 质量保障 Dev for Dev

Tapdata PDK 生态共建计划启动!Doris、OceanBase、PolarDB、SequoiaDB 等十余家厂商首批加入

tapdata

数据库 实时数据

王者荣耀商城异地多活架构设计

AragornYang

架构训练营 架构实战营

现代间谍技术的演变:从“王牌特工”到“行走的50w”

脑极体

那些年我们一起优化的SQL

Java工程师

Java sql 程序员 索引 MySQL 数据库

区块链溯源!“有机”食品也要“有迹可循”

旺链科技

区块链 产业区块链 食品追溯

架构训练营 模块七

Geek_16d2b8

架构训练营 模块七

恒源云(Gpushare)_如何加速从 GitHub 上克隆代码或下载文件?技巧大放送8!

恒源云

GitHub

架构实战营:模块七作业

刘璐

皮皮APP联动社会各界,关注孤独症儿童,照亮人生成长的道路

联营汇聚

云原生小课堂|高性能、高可用、可扩展的MySQL集群如何组建?

York

云原生 MySQL 高可用 MySQL 数据库

浅谈加密算法 aes

奋飞安全

android 安全

王者荣耀商城异地多活架构设计

李大虾

#架构实战营 「架构实战营」

数据库原理知识及SQL语言知识拓展

王小王-123

MySQL 数据库 MySQL 数据库 4月月更

音视频开发必懂知识—低延迟相关知识整理

Linux服务器开发

WebRTC ffmpeg 音视频开发 低延迟 流媒体服务器开发

洞见科技深度参编的央行金科联盟「多方安全计算」及「联邦学习」金融应用研究报告正式发布

洞见科技

金融科技 隐私计算 金融创新

SpringBoot接入轻量级分布式日志框架(GrayLog)

Java工程师

Java spring 分布式 springboot 组件

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