基于 Kubernetes 的 FaaS 平台开源实现——Kubeless 的应用实践

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 通常我们认为Serverless包含两个部分,FaaS和BaaS,本次主要讲的是FaaS部分。 什么是Serverless 通常我们认为Serverless包含两个部分,FaaS和BaaS,本次主要讲的是FaaS部分。

通常我们认为Serverless包含两个部分,FaaS和BaaS,本次主要讲的是FaaS部分。

什么是Serverless

通常我们认为Serverless包含两个部分,FaaS和BaaS,本次主要讲的是FaaS部分。

Serverless作为无服务架构,有几个最基本的特点。首先是 无需关心底层基础设施,开发者无需考虑扩展和网络方面的问题;由于它的部署单位是function,使得开发者无需关心运行实例和容器,减少了应用部署时间;可以做到按需运行,实现细粒度的成本控制。

Serverless带来的好处是显而易见的,这主要涉及公有云和私有云两种场景。公有云上的Serverless可以有效减少复杂度,运维开销、代码部署时间等。很多公有云厂商都提供相应的服务,让开发者无需管理操作系统,也不用构建容器,仅需为运行中的function付费,代码push之后不用关心后续的运维问题。

不过公有云提供的FaaS平台的问题在于标准不一致,会造成在A服务商平台上写的代码在B服务商平台上无法运行。 这对于初创企业来说可能影响不大,但有一定规模的企业应该会想要更多的选择自主权,而非限定于特定服务商,在私有云平台上搭建自己的FaaS平台是更优的方案。

Serverless in kubernetes

当前流行的开源FaaS平台有OpenFaas、Kuberless、Fission、openWhisk,Knative。这些项目大多是在2016的时候兴起的,基于kubernetes,因此我们可以认为FaaS的成长很大程度上是伴随着kubernetes的成熟而发展起来的。

Kubeless

Kubeless是基于kubernetes平台上原生的FaaS平台,这主要是因为它大量使用了kubernetes能力,包括auto-scaling、API routing、monitoring等。当前支持的开发语言也有很多,涵盖python、PHP、Nodejs、Ruby、Golang、.net、Java。

基于kubernetes原生能力的设计

kubeless基于kubernetes原生能力的设计包含多个方面:

  • 使用CRD表示Functions

  • 每个事件源被建模成一个独立的Trigger CRD对象

  • 独立的CRD控制器负责CRD对象的CRUD操作

  • Pod来运行相关的Runtime

  • Configmap用来注入函数代码到Runtime Pod中

  • Init-contain用来加载函数可能的依赖

  • Service用来暴露函数

  • Ingress用来对外暴露函数

Kubeless的核心概念

Kubeless的核心概念有三个:Function-被执行的代码、Trigger-触发函数的事件、Runtime-执行函数的语言和运行时环境。

上图是一个简单的示例,可以看到构建Function只需要指定function名字和runtime,然后将代码push上去就行了。

有了Function之后就需要和具体的Trigger绑定才能够使用,目前主要有3种Triggers类型:HTTP-通过k8s的Ingress同步触发函数执行;CronJob-通过k8s的CronJob对象定时触发函数执行;PubSub-通过kafka/NAST消息队列异步触发函数执行。

Kubeless的应用维护

上图为kubeless官方提供的UI工具,虽然看上去比较简陋,但功能还是够用的,它基本上涵盖了函数创建、函数执行、日志查询、代码修改,足以应付一些小规模测试。

前面提到过FaaS是按需运行的,一般在没有function执行的时候,Runtime会被销毁掉。这归功于k8s的弹性伸缩策略,该策略基于两种metric:CPU和QPS。

监控方面FaaS主要关注Call rate、Failure rate、Execution duration这3个指标,通过它们来衡量function,也可以从中看出Kubeless本身的一些运行情况。

关于微服务与function的思考

一般来说FaaS比较适用于事件驱动的应用场景。典型的有Webhook、消息推送、IoT数据采集、定时任务、轻量级API网关、流式事件处理等。

将微服务和function进行对比之后,我们可以看到Function是天然的微服务,从它们之间的各种特征来看,微服务的业务粒度划分和function很类似,function可以实现和微服务同样的功能。

从长期来看,FaaS会改变传统软件开发模式,这只是事件长短的问题。我们团队之所以这么关注kubeless,就是因为我们认为它会对未来的软件开发模式有非常大的影响,它可以能有效提高开发效率和代码质量。

微服务化过程是一个逐步演进的过程,无法一蹴而就。

关于微服务和function的部分基本就是以上这些。对于kubeless我们认为它最重要的价值在于提供了企业内部的代码微服务化的一种可选方案,实现了系统层和业务逻辑之间的隔离,让软件开发更贴近其目的的本源。


本文转自掘金- 基于 Kubernetes 的 FaaS 平台开源实现——Kubeless 的应用实践
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
444 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
3月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
163 0
|
5月前
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
445 30
|
4月前
|
人工智能 运维 安全
阿里云 Serverless 助力海牙湾构建弹性、高效、智能的 AI 数字化平台
海牙湾(G-Town)是一家以“供应链+场景+技术+AI”为核心驱动力的科技公司,致力于为各行业提供数字化转型解决方案。通过采用阿里云Serverless架构,解决了弹性能力不足、资源浪费与运维低效的问题。SAE全托管特性降低了技术复杂度,并计划进一步探索Serverless与AI结合,推动智能数字化发展。海牙湾业务覆盖金融、美妆、能源等领域,与多家知名企业建立战略合作,持续优化用户体验和供应链决策能力,保障信息安全并创造可量化的商业价值。未来,公司将深化云原生技术应用,助力更多行业实现高效数字化转型。
325 19
|
5月前
|
存储 负载均衡 测试技术
ACK Gateway with Inference Extension:优化多机分布式大模型推理服务实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with Inference Extension组件,在Kubernetes环境中为多机分布式部署的LLM推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
5月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
311 12
|
5月前
|
人工智能 开发框架 运维
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
Serverless MCP 运行时业界首发,函数计算支持阿里云百炼 MCP 服务!阿里云百炼发布业界首个全生命周期 MCP 服务,无需用户管理资源、开发部署、工程运维等工作,5 分钟即可快速搭建一个连接 MCP 服务的 Agent(智能体)。作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力。
 Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
|
6月前
|
存储 人工智能 Kubernetes
ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
6月前
|
存储 人工智能 物联网
ACK Gateway with AI Extension:大模型推理的模型灰度实践
本文介绍了如何使用 ACK Gateway with AI Extension 组件在云原生环境中实现大语言模型(LLM)推理服务的灰度发布和流量分发。该组件专为 LLM 推理场景设计,支持四层/七层流量路由,并提供基于模型服务器负载感知的智能负载均衡能力。通过自定义资源(CRD),如 InferencePool 和 InferenceModel,可以灵活配置推理服务的流量策略,包括模型灰度发布和流量镜像。
|
6月前
|
人工智能 运维 架构师
Serverless + AI 让应用开发更简单,加速应用智能化
Serverless + AI 让应用开发更简单,加速应用智能化
176 5

热门文章

最新文章

推荐镜像

更多