从Kubernetes到Serverless

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: ——李健(一分)阿里云Serverless应用引擎技术专家

一、K8sServerless带来了什么

image.png

Kubernetes是基于容器的调度引擎。早期,基于容器的技术LXCCgroup2013 年,Docker 项目的开源标志容器技术的成熟容器镜像标准诞生。

容器镜像标准诞生之前,业界对系统没有真正地进行有关注点的拆分,我们认为系统是面向于基础设施的。容器镜像标准的诞生意味着系统将会依据两个关注点拆分一是面向应用,二是面向基础设施。面向应用容器镜像面向基础设施内核。有了容器镜像,才有基于容器的部署生态的不断完善

2014年时,Kubernetes项目诞生,同年Lambda发布,标志着Serverless商业化进程再进一步2016 年,CNCF 原生基金会的成立标志着 Kubernetes生态逐渐成熟和壮大。2018 年,Knative阿里巴巴Serverless应用引擎发布,标志着基于Kubernetesserverless实现产品化。

image.png

CNCF 框架下,诞生了很多Kuebrnetes生态项目,发展欣欣向荣。

Kubernetes特殊在于其理念,比如它遵照着serverless的理念,比如不可变基础设施面向终态声明式 API 等,造就了今天的Kubernetes生态。

image.png

早期 Linux 操作系统面向一台服务器,应用运行时可以和底下的设备进行解耦。应用只通过内核的 API 即可在不同的硬件上进行适配、运行。其设计哲学为“一切皆文件”,也造就了Linux生态的繁荣。Kubernetes的声明式API也可以看作资源文件的CRUD接口,它实现了分布式的基础设施和应用之间解耦。

Linux针对单台机器Kubernetes针对分布式系统,集群里所有节点都被打平,可以直接调度,又因为其面向不可变基础设施理念,进程挂掉以后可以重建可以调度到其他节点上。

Kubernetes一个虚拟的分布式操作系统, Linux 系统上遇到的问题,在Kubernetes也将会遇到。


二、分布式应用交付遇到的问题

Kubernetes 发展至今,生态在不断完善,而容器和Kubernetes的生态奠定了一系列应用交付的形态,但是暴露了过多复杂性,选型、维护和管理的复杂性大幅增加

image.png

当前,用户的关注点一直在左移。早期多的关注点在于基础设施网络硬件而如今已经渐渐无需关注基础设施层,只需专注于自己的业务。

自建Kubernetes主要存在以下三个方面的问题:

第一,资源消耗对于中小用户而言,维护一套集群会带来很多成本,比如一个高可用的operator需要三副本,还需围绕三副本建立监控、日志等。且集群本身也会占用资源,业务波动时容易导致node节点利用不足、资源浪费。

第二,运维复杂。不仅要了解Kubernetes集群的架构,还要对addon(日志、监控)进行技术选型,保证生产环境出问题时能够快速排查定位。且问题的排查也会给运维工程师带来更多的工作量

第三,使用心智。KubernetesAPI有两面性一方面是面向实现,是operator运行的基础;另一方面是面向使用,比如kubectlkustomizehelm等。一个裸的kubernetes中约有近百种资源类型,但用户使用到的资源基本不超过10种。

三、SAE的解决之道

image.png

Serverless架构已经成为趋势更容易被大家所认可,也真正提高了用户的使用体验。Serverless不仅指函数计算,也指计算基础设施的所有供应、扩展、监控和配置都委托给平台的操作模型。

image.png

如果要自建Kubernetes,则过程类似于选择一台组装电脑,需要经历多次选型比如显卡、CPU、内存等,试错成本高;而如果使用一站式的发布平台,则类似于选择一体机,无需关注各项细节,开箱即用。但一站式的发布平台需要基于大规模的沉淀和积累。此外,阿里也针对一些开源组件进行了改造和适配,沉淀为Serverless的体验。

image.png

SAE即上文提到的“一体机 ”——一站式应用发布平台。

SAE平台基于Kubernetes实现,但考虑了基础设施的兼容,也考虑了面向应用会涉及到的addon适配和兼容等,最终实现了一个集成的版本,为用户提供更好的体验

SAE提供了Serverless体验,用户无需关注基础设施,将基础设施托管给云平台,以此得到更大的弹性和扩缩容能力另外,SAE提供了急速弹性和灵活的策略。得益于与云的高度结合,支持突发场景下的秒级弹性伸缩按量计费Serverless特点,稳健保障用户的 SLA,支持丰富的弹性策略。

四、SAE技术原理

image.png

首先,Kubernetes集成了安全容器。容器内核是宿主机共享,安全容器相当于每容器有独立的内核,保证了不同应用之间不会因为有内核漏洞或越权等出现跨容器的侵入。

image.png

社区的安全容器解决方案包括KataFirecrackergVisor。安全容器不仅实现了安全隔离,也实现了性能隔离和故障隔离,不会因为某应用引发内核问题导致机器上所有应用都产生故障。

image.png

SAE提供了微服务无损下线的能力。

Kubernetes所有接口都为异步,pod终止之后才会从注册节点摘掉自己的服务,因此会出现断流。SAE基于Kubernetes本身的能力 pre-stop 实现了主动下线,一旦收到pod终止的信号,首先会调用 pre-stop 帮助用户主动将流量从注册中心摘除,使得应用在下线过程中不会出现断流。

image.png

监控和诊断方面,集成阿里云内部产品比如 ARMS等,应用发布后可自动集成监控能力,可在界面上一键查看服务调用情况函数的调用路径

image.png

SAE提供了端云联调的能力。

用户可以在本地通过 IDE 以及阿里云上的插件,再结合跳板机,即可实现本地和云端的联调,提升用户本地开发的效率。

image.png

SAE场景下,用户集群无感知只需创建命名空间,并设置命名空间的 VPCAswitch应用部署到某个命名空间之后,应用下的pod也会随之部署在 VPCA上,无需自建Kubernetes集群,管理维度也可到达命名空间粒度。

image.png

Serverless提供的免运维能力能够直接面向应用,一键部署无需关注底层的基础设施资源,按照实例收费,按照应用维度做各种运维操作,ECS 所需的日志监控系统等都已集成在内

image.png

Serverless的极速弹性带来了更好的用户体验以及成本的降低。面对剧烈变化的流量能够在10-15s内实现迅速伸缩

image.png

原生k8s部署重建升级策略如上图所示。而SAE实现了原地升级策略,只更新镜像时,容器无需重新调度,在原地即可将老的镜像进行销毁然后拉起新镜像,实现快速启动部署的效率提升42%

image.png

另外SAE实现了镜像预热策略。拉起pod时很大一部分时间花费在镜像的拉取上,拉取用户镜像和调度系统某一部分重叠,因此,无需在将网络容器建立后再拉取镜像而是可以提前某个节点上帮助用户将节点进行加载,加速预热过程,帮助用户更快启动容器,弹性效率提升30%

image.png

SAE针对不同语言做了启动加速。

Java 为例,我们将Dragonwell进行了优化后集成进SAE,增强了AppCDS启动加速。比如多个实例场景下,第一个实例启动时间可能正常,其他几个实例启动扩缩容时,可以通过 AppCDS 技术大幅缩短冷启动时间

image.png

同时,利用Dragonwell Wisp的能力实现了Java运行时加速。将正常的 Java 线程转换协程来实现运行式的加速,运行效率提升20%

Q&A

Q:函数计算选型时,为什么会选择轻量级的容器?

A函数计算最早时只有一种模型,即单实例单请求,意味着某一时刻一个实例只能处理一次请求,处理完后,下一次请求如果再打到该实例进行处理。当前,函数计算底层的隔离是 Micro VM 不再是传统的 Docker很多客户看到了函数计算的弹性,但是对冷启动无法接受因此希望通过单实例多请求规避冷启动。因为多请求时会基于水位实现弹性伸缩在水位未到达弹出警戒线时,几个并发都在已有的实例上工作多个请求都在一个Micro VM,对于单个请求没有做隔离。

Python Node.js虽然支持了单实例多并发,但它只是减少了启动具体的请求处理过程中依然是单个处理模型。所以多请求是没有的。另一种比如Java 生态或 go 生态,可以做协程或多线程触发,可以在同一时间处理多个请求,但在runtime 模型上,如果在请求层面再套一层隔离,则会导致 overhead很长。

另外,单实例多线程情况一个线程 panic 可能会导致整个实例panic ,目前该问题尚且没有较好的解决方案

相关实践学习
通过ACR快速部署网站应用
本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5月前
|
人工智能 Serverless 调度
突破地域限制,实现算力无限供给 —阿里云ACK One注册集群开启多地域Serverless算力调度
本文介绍了阿里云ACK One注册集群多地域Serverless算力调度解决方案,解决传统数据中心在AI时代面临的算力不足问题。方案通过分钟级接入、100%兼容Kubernetes操作及云上Serverless弹性,实现跨地域弹性算力供给,支持高并发请求与模型快速迭代。文中详细描述了快速接入步骤、指定地域调度及动态调度方法,并提供了相关代码示例。该方案助力企业实现AI推理服务的规模化部署,提升商业落地效率。
|
5月前
|
人工智能 Serverless 调度
突破地域限制,实现算力无限供给 -- 阿里云ACK One注册集群开启多地域Serverless算力调度
传统单地域算力难以支撑AI推理场景的高并发实时响应、突发高流量的要求,阿里云容器服务ACK One注册集群推出多地域Serverless算力调度方案完美解决此问题。
|
7月前
|
Kubernetes 监控 Serverless
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。
|
弹性计算 Kubernetes 安全
Kubernetes 的架构问题之在Serverless Container中保障应用的安全防护如何解决
Kubernetes 的架构问题之在Serverless Container中保障应用的安全防护如何解决
221 9
|
弹性计算 Kubernetes Serverless
Kubernetes 的架构问题之Serverless Container中不支持特权模式的问题如何解决
Kubernetes 的架构问题之Serverless Container中不支持特权模式的问题如何解决
188 8
|
运维 Kubernetes 大数据
Kubernetes 的架构问题之在Serverless Container场景下尚不支持资源超售如何解决
Kubernetes 的架构问题之在Serverless Container场景下尚不支持资源超售如何解决
126 0
|
5月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
505 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
3月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
202 0
|
5月前
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
491 30
|
5天前
|
人工智能 Kubernetes 安全
重塑云上 AI 应用“运行时”,函数计算进化之路
回顾历史,电网的修建,深刻地改变了世界的经济地理和创新格局。今天,一个 AI 原生的云端运行时的进化,其意义也远不止于技术本身。这是一次设计哲学的升华:从“让应用适应平台”到“让平台主动理解和适应智能应用”的转变。当一个强大、易用、经济且安全的 AI 运行时成为像水电一样的基础设施时,它将极大地降低创新的门槛。一个独立的开发者、一个小型创业团队,将有能力去创造和部署世界级的 AI 应用。这才是技术平权的真谛,是激发全社会创新潜能的关键。

热门文章

最新文章

相关产品

  • 函数计算
  • 推荐镜像

    更多