Serverless X OpenKruise 部署效率优化之道

本文涉及的产品
简介: 在追求部署效率的道路中,SAE 正在探索更多维度,更细粒度的解决方案。相信在不久的将来,SAE 的极致弹性,无论在弹性效率,弹性规模,还是智能精准等方面都会大放异彩。

Serverless 作为云计算的最佳实践、云原生发展的方向和未来演进趋势,其核心价值在于快速交付、智能弹性、更低成本。SAE(Serverless应用引擎, https://www.aliyun.com/product/aliware/product/sae)作为首款面向应用的Serverless PaaS 平台,实现了 Serverless 架构与微服务架构的完美结合,使存量应用也可以零代码改造享受 Serverless 赋予的技术红利,目前正在增强多语言特性,向多负载类型多元化场景方向演进。作为 Serverless 平台,高效的应用部署效率无疑是产品的核心竞争力,也是弹性伸缩、智能托管的基础。更快的部署效率,意味着更好的用户体验,更低的用户成本,更极致的弹性能力。SAE 极致弹性项目,力求提升应用端到端启动速度,保证用户在突发场景下的快速扩容效率和系统稳定性 SLA 。

项目背景

SAE 底层使用 Kubernetes 架构,使用神龙裸金属安全容器、 ECI 两种资源池,用户在SAE中运行的应用会映射到 Kubernetes 中相应的资源。

通过采集线上全量 K8s 事件,整个 Pod 的创建生命周期进行分节点、分阶段的耗时统计分析,以神龙节点为例,各阶段比例如图:
image.png
从图中可以看出,整个 pod 的创建生命周期包括调度,拉取并创建 init 容器,拉取用户业务镜像,创建和启动容器等。其耗时主要集中在调度和拉取用户镜像上。究其原因在于 SAE 神龙节点调度链路整体耗时较长,而镜像耗时主要在于拉取镜像与解压镜像的时长,特别是在大容量镜像部署的情况下尤为突出。

实施方案

SAE 团队从长期架构规划,使用场景通用性等多个方面进行方案调研分析, 考虑采用原地升级的部署策略代替重建升级策略,避免部署过程中重调度,减少整体耗时。

所谓原地升级,即只更新 Pod 中某一个或多个容器版本、而不影响整个 Pod 对象、其余容器的升级,而且在升级过程中保证 ip、node 不发生改变。在阿里巴巴内部,绝大部分电商应用在云原生环境都统一使用原地升级的方式做发布,这种原地升级的模式极大地提升了应用发布的效率,节省了调度,分配网络,挂载磁盘以及拉取镜像的耗时。通过分析线上 SAE 用户历史部署记录,发现只更新镜像/程序包部署应用的占大多数,也就是说原地升级能力非常适合在 SAE 产品中落地。
image.png
原地升级给 SAE 带来的优势在于:

1、避免重调度,避免 sidecar 容器重建,整个部署耗时只需要拉取和创建业务容器
2、无需调度,可以预先在 Node 上缓存新镜像,提高弹性效率。
3、可以保持 ip 不变,避免因 ip 变化导致依赖组件如注册中心感知的延时。
4、减少重建 pod 对调度器,注册中心,业务上下游的压力。

与此同时,OpenKruise项目(https://openkruise.io/)已经将原地升级能力通过 CloneSet/AdvanceStatefulSet 贡献于开源。CloneSet 是 OpenKruise 中提供的核心 workload 之一,它主要面向无状态应用,提供了更加高效、确定可控的应用管理和部署能力,支持优雅原地升级、指定删除、发布顺序可配置、并行/灰度发布等丰富的策略,可以满足更多样化的应用场景。CloneSet 与原生 kubernetes workload 功能对比如图:

image.png
SAE 决定采用 CloneSet 作为新的应用负载,一方面借助其原地升级的能力提升应用整体部署效率,另一方面也结合 OpenKruise 开源的力量,共同打造通用标准的无状态应用负载的大规模使用实践。针对于增量应用, SAE 会默认采用 CloneSet 进行用户应用的部署,并结合最大不可用实例数和优雅升级时长来保证发布的流量无损,而对于存量应用, SAE 将采用基于有限状态机的滚动升级进行在线迁移操作。

方案上线后效果显著,在一个月的时间内,已经有近千个应用使用 CloneSet 进行部署,且原地升级次数为重建升级的两倍,部署效率比原生 K8s 提升 42% ,结合镜像缓存,用户部署应用到容器启动在秒级内完成。SAE 后续会对更多 OpenKruise 的高级能力产品化,同时结合用户场景,不断打磨稳定性与最佳实践回馈于开源。
image.png

原生 K8s 部署应用重建升级策略 VS SAE部署应用原生升级策略

未来展望

在追求部署效率的道路中,SAE 正在探索更多维度,更细粒度的解决方案。相信在不久的将来,SAE 的极致弹性,无论在弹性效率,弹性规模,还是智能精准等方面都会大放异彩。
image.png

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
1月前
|
监控 Serverless 对象存储
Serverless 应用引擎常见问题之用ECI部署Traefik时设置如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
237 2
|
1月前
|
人工智能 Serverless API
在函数计算上部署专属的Agent平台
Agent及Agent平台的相关概念和应用价值已经在《智能体(Agent)平台介绍》 文章进行了介绍,接下来我们要进行实际的操作,在阿里云函数计算上快速获取专属的Agent平台-AgentCraft
83207 7
在函数计算上部署专属的Agent平台
|
2月前
|
人工智能 Serverless API
【体验有奖】5 分钟函数计算部署 AI 艺术字应用,晒姓氏头像赢 Cherry 键盘!
【体验有奖】5 分钟函数计算部署 AI 艺术字应用,晒姓氏头像赢 Cherry 键盘!
|
1月前
|
监控 Serverless Docker
函数计算常见问题之部署docker-compose
函数计算(Function Compute, FC)是阿里云提供的无服务器计算服务,它允许用户在无需管理服务器的情况下运行代码,但在配置和执行过程中可能遇到报错,本合集致力于梳理FC服务中的常见报错和配置问题,并提供解决方案,帮助用户优化函数执行环境。
188 2
|
1月前
|
JSON 运维 JavaScript
函数计算常见问题之部署报错如何解决
函数计算(Function Compute, FC)是阿里云提供的无服务器计算服务,它允许用户在无需管理服务器的情况下运行代码,但在配置和执行过程中可能遇到报错,本合集致力于梳理FC服务中的常见报错和配置问题,并提供解决方案,帮助用户优化函数执行环境。
337 2
|
2月前
|
存储 物联网 Serverless
玩转 AI 绘图,基于函数计算部署 Stable Diffusion可自定义模型
本文主要将带大家通过使用阿里云产品函数计算 FC 和文件存储 NAS ,快速使用 Stable Diffusion 实现更高质量的图像生成,本方案内置模型库+常用插件+ControlNet ,用户可根据自己的需要更换需要的模型、Lora、增加插件。
48855 27
玩转 AI 绘图,基于函数计算部署 Stable Diffusion可自定义模型
|
8天前
|
Cloud Native Serverless API
Serverless 成本再优化:Knative 支持抢占式实例
Knative 是一款云原生、跨平台的开源 Serverless 应用编排框架,而抢占式实例是公有云中性价比较高的资源。Knative 与抢占式实例的结合可以进一步降低用户资源使用成本。本文介绍如何在 Knative 中使用抢占式实例。
42125 2
|
25天前
|
人工智能 监控 Serverless
如何基于ACK Serverless快速部署AI推理服务
通过上述步骤,可以在ACK Serverless上快速部署AI推理服务,实现高可用、弹性扩展的服务架构。
19 1
|
1月前
|
关系型数据库 Serverless 分布式数据库
Serverless 应用引擎常见问题之部署官方镜像如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
216 1
|
1月前
|
运维 监控 Serverless
一键开启 GPU 闲置模式,基于函数计算低成本部署 Google Gemma 模型服务
本文介绍如何使用函数计算 GPU 实例闲置模式低成本、快速的部署 Google Gemma 模型服务。
164778 57

相关产品

  • 函数计算