serverless开源架构方案——knative

author author     2023-02-08     503

关键词:

2014年11月,AWS发布了新产品Lambda,开启了全新的Serverless时代。按照当时的描述,Lambda是一种计算服务,它按需运行用户的代码,用户无须关注底层的计算资源。继AWS Lambda之后,很多公有云提供商都推出了自己的Serverless支持。2016年Google、Microsoft Azure相继推出自己的Cloud Function服务,2017年国内公有云提供商阿里云和腾讯云也分别推出了各自的Serverless产品。

整体来说,Serverless当前还处于发展初期,正在快速地迭代,并且各个云厂商均推出一套自己的Serverless标准,所以这些Serverless是无法互通的,从而导致一旦选定了某个云厂商,就会被这个云厂商的技术体系绑住,无法自如地迁移。面对Serverless领域当前的无序和混乱,Google联合IBM、Pivotal、Redhat和SAP,一起推出了Knative,目的是实现Serverless标准化。

Knative是一个以Kubernetes和Istio为基础的Serverless开源架构方案,目的是解决Kubernetes环境下Serverless应用的构建、部署和运行。Knative和以往Serverless解决方案最大的不同是,Knative不仅管理函数,它的定位是管理所有的工作负载,除了Serverless关注的函数外,还包括普通的微服务,因此Knative强调的是通过相应的机制,用户不用再关注应用的伸缩和运维。

此外,Knative不是实现一个具体的Serverless,而是构建一个能够运行标准化Serverless的平台,Knative提供大量的扩展性支持,允许其他Serverless产品在其上运行。

架构上,Knative由Build、Serving和Eventing 3个核心组件组成。其中Build负责构建工作,把用户定义的函数和应用构建成容器镜像;Serving负责计算工作,具体包含Serverless实例的路由和访问,以及Serverless实例的按需伸缩;Eventing负责事件工作,自动完成事件的绑定和触发执行。

Serving系统基于Kubernetes和Istio进行开发,利用Kubernetes强大的容器调度和生命周期管理能力以及Istio的通信和通信链路治理能力。另外,为了屏蔽Kubernetes和Istio的复杂度,Knative Serving自身有更高一层的抽象能力,提供一组用来对应用和通信进行管理的抽象概念(可使用Kubernetes CRD对这些抽象概念进行管理)。Knative Serving的主要概念如下。

1)Route:工作负载的路由规则,对应Istio的VirtualService。

2)Configuration:应用的最新配置,对应Kubernetes的Deployment。

3)Revison:每次对工作负载进行修改的快照,对应Istio的Subset。

4)Service:对工作负载的整个生命周期进行管理。

Knative的Serving系统做的事情和Kubernetes、Istio大体相同,但通过提供更高的抽象,屏蔽了Kubernetes、Istio的细节,自动帮应用管理好Deployment、VirtualService以及auto scaling之间的关系。

auto scaling是Knative Serving实现工作负载自动伸缩的关键组件,当前还处于发展早期,有不少性能问题,很不成熟,Knative后续计划将auto scaling下沉,直接复用Kubernetes原生的auto scaling能力。

基于Kubernetes的Serverless产品和解决方案市场上已经有不少,比如Fission、Funktion、Kubeless等,但同时依赖Kubernetes和Istio这两个重量级的项目,Knative还是第一个。Kubernetes和Istio的复杂度都很高,同时基于Kubernetes和Istio,再加上Serverless自身的复杂度,会导致整个Serverless解决方案的复杂度非常高,学习曲线上也非常陡峭,因此很多人都有如下疑问和质疑:Knative中为什么采用Kubernetes和Istio这么重的通信解决方案?

从架构和通信功能实现来看,确实没有必要,为了对上层用户屏蔽底层Kubernetes和Istio的实现细节,Knative又引入了一层抽象概念,对Kubernetes的容器和通信功能进行封装。如果通信直接放在Knative层面上做,只聚焦Kubernetes平台对Serverless的通信支持,不需要平台扩展性和场景扩展性支持,架构设计上会特别简单,同时灵活性也会比现在好。

从短期和静态的角度看,Knative引入Istio,确实没有那么大的必要,因为增加了复杂度,减少了灵活性。但从云计算基础设施的大趋势来看,Kubernetes已经成为容器调度和生命周期管理的事实标准,可以看成云原生时代的Linux操作系统;Istio虽然产生时间不长,但已经显现出强大的发展势头,当前在Service Mesh和Kubernetes生态中的地位已经不可撼动,可以看成云原生时代的TCP/IP协议。

因此,如果从云计算的发展趋势上看,通信功能会被Istio完全接管,并下沉为基础设施的一部分。在通信层面,Istio肯定更聚焦、更专业,Knative从大趋势出发,直接复用Istio的通信层功能,避免后续架构上的修改和返工,可以将自身聚焦到Serverless层面的功能和生态打造上。从架构的角度看,这也是Unix设计哲学的体现——整个系统采用模块化设计,每个模块只聚焦一件事情,并且做好做到极致

开源serverless里程碑:knative1.0来了

...:元毅导读Knative是基于Kubernetes之上提供的一款开源Serverless应用框架,帮助用户部署和管理现代化的Serverless工作负载,打造企业级Serverless平台。Knative具备如下优势:在几秒钟内建立可扩展、安全、无状态的服务... 查看详情

serverless开源架构方案

2014年11月,AWS发布了新产品Lambda,开启了全新的Serverless时代。按照当时的描述,Lambda是一种计算服务,它按需运行用户的代码,用户无须关注底层的计算资源。继AWSLambda之后,很多公有云提供商都推出了自己的Serverless支持。2016... 查看详情

serverless工程实践|零基础上手knative应用(代码片段)

简介: Knative是一款基于Kubernetes的Serverless框架。其目标是制定云原生、跨平台的Serverless编排标准。Knative介绍Knative通过整合容器构建(或者函数)、工作负载管理(动态扩缩)以及事件模型这三者实现其Server... 查看详情

开箱即用,knative给您极致的容器serverless体验(代码片段)

...可下载完整调查报告>CNCF发布的年度调查报告显示2019年Serverless技术进一步获得了更大的认可。其中41%的受访者表示已经在使用Serverless,另外20%的受访者表示计划在未来12-18个月内会采用Serverless技术。而在众多开源的Serverless项... 查看详情

开箱即用,knative给您极致的容器serverless体验(代码片段)

...可下载完整调查报告>CNCF发布的年度调查报告显示2019年Serverless技术进一步获得了更大的认可。其中41%的受访者表示已经在使用Serverless,另外20%的受访者表示计划在未来12-18个月内会采用Serverless技术。而在众多开源的Serverless项... 查看详情

serverless工程实践|零基础上手knative应用(代码片段)

简介:Knative是一款基于Kubernetes的Serverless框架。其目标是制定云原生、跨平台的Serverless编排标准。前言:Knative是一款基于Kubernetes的Serverless框架。其目标是制定云原生、跨平台的Serverless编排标准。Knative介绍Knative通过整... 查看详情

继knative后,谷歌再向cncf捐赠istio

...障、管理与监控方式。Knative是一个基于Kubernetes与Istio的Serverless架构方案,Istio是Knative所依赖的ServiceMesh。按照规划,Istio本来就要捐赠给CNCF;但在2019年KubeCon期间,谷歌却打破与IBM定下的协议表示,不打算在... 查看详情

从函数计算到serverless架构(代码片段)

前言随着Serverless架构的不断发展,各云厂商和开源社区都已经在布局Serverless领域,一方面表现在云厂商推出传统服务/业务的Serverless化版本,或者Serverless计算平台,另一方面表现在开源社区中Serverless相关项目逐... 查看详情

开源工作流引擎如何支撑企业级serverless架构?(代码片段)

Serverless应用引擎(SAE)是一款底层基于Kubernetes,实现了Serverless架构与微服务架构结合的云产品。作为一款不断迭代的云产品,在快速发展的过程中也遇到了许多挑战。如何在蓬勃发展的云原生时代中解决这些挑... 查看详情

serverless从入门到进阶:架构原理与实践

Serverless从入门到进阶:架构、原理与实践腾讯云Serverless项目早期参与者撰写,基于腾讯云、阿里云和亚马逊云等多个云厂商的产品和技术;从产品和技术两个维度展开,讲解Serverless的架构设计、技术原理、开发流程、实战案例... 查看详情

终于有人把knative讲明白了

...Google在2018的GoogleCloudNext大会上发布的一款基于Kubernetes的Serverless框架。作者:刘宇来源:大数据DT(ID:hzdashuju)其基本信息如表2-2所示。▼表2-2Knative基本信息Knative一个很重要的目标就是制定云原生、跨平台... 查看详情

从函数计算到serverless架构(代码片段)

作者:秋雨陈前言随着Serverless架构不断发展,各云厂商和开源社区都已经布局Serverless领域,一方面表现在云厂商推出传统服务/业务的Serverless化版本,或者Serverless计算平台;另一方面表现在开源社区中Serverles... 查看详情

serverlessdevs重大更新,基于serverless架构的ci/cd框架:serverless-cd(代码片段)

近日,Serverless开发者平台ServerlessDevs重磅发布基于Serverless架构的轻量级CI/CD框架——Serverless-cd。Serverless-cd是一款运行在Serverless架构上的功能强大而灵活,安全,低成本的CI/CD开源框架。该框架基于ServerlessDevs开发者... 查看详情

当knative遇见webassembly(代码片段)

Knative是在Kubernetes基础之上的Serverless计算的技术框架,可以极大简化Kubernetes应用的开发与运维体验。在2022年3月成为CNCF孵化项目。Knative由两个主要部分组成:一个是支持HTTP在线应用的KnativeServing,一个是支持CloudEvent... 查看详情

阿里云容器服务发布knative托管服务|云原生生态周报vol.49

...容器服务发布Knative托管服务Knative是Kubernetes生态最流行的Serverless编排框架。可Knative的Controller和依赖的网关这些常驻实例需要支付额外的IaaS成本和运维成本,这给应用的Serverless化带来了一定的门槛。所以我们在ServerlessKubernetes... 查看详情

serverless选型:深度解读serverless架构及平台选择

...在每个阶段要面对的问题,然后组合解决方案,提炼面向Serverless的开发模型,并与业界提出的Serverless产品形态做对应,为开发者采用Serverless架构和服务提供参考。近两年来,Serverless概念在开发者中交流的越来越多,主题分享... 查看详情

serverless选型:深度解读serverless架构及平台选择

...在每个阶段要面对的问题,然后组合解决方案,提炼面向Serverless的开发模型,并与业界提出的Serverless产品形态做对应,为开发者采用Serverless架构和服务提供参考。近两年来,Serverless概念在开发者中交流的越来越多,主题分享... 查看详情

阿里云容器服务发布knative托管服务|云原生生态周报vol.49

...容器服务发布Knative托管服务Knative是Kubernetes生态最流行的Serverless编排框架。可Knative的Controller和依赖的网关这些常驻实例需要支付额外的IaaS成本和运维成本,这给应用的Serverless化带来了一定的门槛。所以我们在ServerlessKubernetes... 查看详情