【智能纪元厅】
2018年,Knative Serverless正式问世。由Google主导开发,面向跨平台平台用户。
让Kubernetes原生支持无服务器工作负载的开源平台
技术特色:无服务器、云原生、开源。
影响力评估:技术维度 9/10,商业维度 7/10,文化维度 6/10,用户维度 7/10。
作为智能纪元厅的经典代表,Knative Serverless在软件发展史上留下了深刻的印记。
让Kubernetes原生支持无服务器工作负载的开源平台
【智能纪元厅】
2018年,Knative Serverless正式问世。由Google主导开发,面向跨平台平台用户。
让Kubernetes原生支持无服务器工作负载的开源平台
技术特色:无服务器、云原生、开源。
影响力评估:技术维度 9/10,商业维度 7/10,文化维度 6/10,用户维度 7/10。
作为智能纪元厅的经典代表,Knative Serverless在软件发展史上留下了深刻的印记。
2018年的云原生世界,正处在一个微妙的转折点上。Kubernetes已经赢得了容器编排之战的胜利,成为分布式系统的事实操作系统。然而,胜利的喜悦尚未散去,新的焦虑已经浮现——开发者们发现,Kubernetes虽然强大,但它的复杂性就像一头难以驯服的巨兽。部署一个简单的无服务器函数,你可能需要同时管理Deployment、Service、HPA、Ingress、ConfigMap等多个资源对象,更别提还要处理流量分发、自动伸缩、灰度发布等运维难题。这种割裂的体验,与无服务器架构承诺的“让开发者只关心代码”的理想相去甚远。
正是在这样的背景下,2018年7月的KubeCon Seattle大会上,Google悄然发布了一个名为Knative的开源项目。它的目标简单而雄心勃勃:让Kubernetes原生支持无服务器工作负载。这个项目的诞生,并非凭空而来,而是Google内部多年基础设施经验的结晶。要理解Knative,必须先理解Google的Borg系统——那个在Google内部运行了超过十年的集群管理系统。Borg孕育了Kubernetes,但Kubernetes只是Borg的简化版,而Knative则承载了更多来自Borg的高级抽象,尤其是关于如何让平台自动管理应用生命周期、流量路由和资源伸缩的智慧。
Knative的创始团队来自Google Cloud Platform,其中核心人物包括Matt Moore、Brian Grant和Ville Aikas等人。Matt Moore是Knative的早期技术负责人,他之前在IBM负责OpenWhisk项目,对无服务器架构有着深刻的理解。Brian Grant则是Kubernetes的早期贡献者之一,参与了Kubernetes架构设计的许多关键决策。Ville Aikas则带来了Google内部Serverless平台的经验,他后来成为Knative Eventing的主要设计者。这个团队的背景决定了Knative的基因:它不是一个从零开始的创新,而是将Google内部运行无服务器工作负载的实践经验,以开源形式输出给整个社区。
Knative的设计哲学,可以用“解耦与组合”来概括。它没有试图创造一个全新的无服务器运行时,而是在Kubernetes之上构建了两组核心组件:Serving和Eventing。Serving负责管理无服务器应用的部署、流量和自动伸缩;Eventing则处理事件驱动的架构,让应用能够响应来自不同源的事件。这种分层设计,使得Knative能够灵活地与现有生态集成。例如,Serving底层可以使用Istio或Kourier作为网络层,而Eventing则可以对接Kafka、GCP Pub/Sub、AWS SQS等消息系统。
Serving的核心创新在于“自动伸缩到零”的能力。在传统Kubernetes中,即使没有流量,Pod也会保持运行,这造成了资源浪费。Knative引入了基于请求的自动伸缩机制,当应用没有流量时,它可以缩容到零个副本,当新请求到来时,再快速启动新实例。这个过程的延迟通常控制在100毫秒以内,通过一种叫做“Activator”的组件实现。Activator是一个哨兵组件,它接收所有流入的请求,并在应用实例不可用时缓存请求,同时触发伸缩操作。这种设计借鉴了Google内部的“无服务器容器”平台,据说其灵感来自Google App Engine的早期架构。
Eventing则解决了无服务器架构中一个更根本的问题:如何让应用以松散耦合的方式响应事件。在传统微服务架构中,服务之间通过API直接调用,这产生了硬依赖。Knative Eventing引入了“Broker”和“Trigger”的概念,应用可以发布事件到Broker,其他应用通过Trigger订阅感兴趣的事件类型。这种模式与CloudEvents标准深度集成,使得不同云厂商的事件系统能够互通。例如,一个部署在阿里云上的Knative应用,可以轻松接收来自GCP Cloud Storage的对象创建事件,而无需修改代码。
Knative的早期版本,却因与Istio的过度耦合而备受争议。Istio作为服务网格,提供了流量管理、安全认证等能力,但它的复杂性和资源开销让许多团队望而却步。在Knative v0.1中,Istio是唯一的网络选项,这意味着部署Knative必须先部署一套完整的Istio。这导致了一个尴尬的局面:本来想简化无服务器部署,结果先要面对一个更复杂的服务网格。社区中出现了大量抱怨,有开发者戏称“Knative就是Istio的推广工具”。Google显然听到了这些声音,从2019年开始,Knative逐步解耦了与Istio的绑定,引入了Kourier作为轻量级网络层,后来又支持了Contour和Gloo等替代方案。这一变化显著降低了Knative的入门门槛,也为它后来成为CNCF孵化项目铺平了道路。
Knative的发展历程,是一部典型的开源项目成长史。2018年发布后,它迅速吸引了IBM、Red Hat、Pivotal等厂商的关注。2019年,Knative成为CNCF的沙箱项目,这标志着它正式进入云原生生态的核心圈层。2021年,它晋升为CNCF孵化项目,此时已经有超过200名贡献者和数千个生产部署。2023年,Knative正式毕业,成为CNCF的顶级项目,与Kubernetes、Prometheus等并列。在这个过程中,Knative的版本演进也反映了技术路线的调整:v0.10版本引入了基于Kubernetes原生HPA的伸缩策,v0.15版本重构了Eventing的Broker实现,v1.0版本则标志着API的稳定。
商业市场上,Knative的影响力远超其开源社区规模。Google Cloud Run是Knative最直接的商业化产物,它提供托管的Knative服务,用户无需管理集群即可部署无服务器容器。阿里云的Serverless Kubernetes服务也基于Knative,将其与阿里云的日志、监控和网络服务深度集成。IBM Cloud Code Engine同样使用了Knative,为开发者提供统一的Serverless体验。值得注意的是,这些商业服务都做了大量定制化改造,比如Google Cloud Run将Knative的Activator替换为自己的全球负载均衡器,实现了更低的冷启动延迟。这种“上游开源,下游定制”的模式,恰恰是Knative设计的初衷——它不是一个成品,而是一个构建Serverless平台的框架。
在技术文化遗产层面,Knative的影响是深远的。它首次证明了Kubernetes可以原生支持无服务器工作负载,从而终结了“Serverless vs Kubernetes”的二元对立。许多后来出现的项目,如OpenShift Serverless、Kyma、Dapr等,都借鉴了Knative的设计理念。特别是Knative的“自动伸缩到零”机制,已经成为云原生Serverless的事实标准,几乎所有基于Kubernetes的Serverless平台都在使用类似方案。此外,Knative Eventing的CloudEvents集成,推动了事件驱动架构的标准化,使得不同云厂商的事件系统能够互操作。
然而,Knative也并非没有遗憾。它的学习曲线依然陡峭,即使解耦了Istio,用户仍然需要理解Serving、Eventing、Configuration、Revision等多个抽象概念。社区中一直有呼声,希望Knative能提供更简单的“一键部署”体验,但项目团队坚持“平台级工具”的定位,认为过度简化会损害灵活性和可扩展性。另一个争议点是,Knative的自动伸缩机制在延迟敏感型场景下表现不佳,冷启动问题虽然通过Activator得到缓解,但无法完全消除。对于金融交易、实时游戏等毫秒级延迟要求,Knative仍然力不从心。
在轶事趣闻方面,Knative的命名本身就很有意思。“Knative”是“K”和“Native”的合成词,但“K”的发音是“kay”还是“kuh”,连创始团队自己都争论不休。在早期的社区会议中,Matt Moore经常被问到这个问题,他最终开玩笑说:“如果你叫它‘kay-native’,我会纠正你;如果你叫它‘kuh-native’,我也会纠正你。正确的发音是‘Knative’,就像‘Kubernetes’一样,不要纠结字母‘K’。”另一个有趣的故事是,Knative的吉祥物是一只名叫“Knati”的章鱼,因为章鱼有八条触手,象征着Knative的多种集成能力。这个吉祥物最初由Google的设计师在内部黑客马拉松中创作,后来被社区接受,成为Knative的标志性形象。
回顾Knative的历程,它从Google内部的一个实验性项目,成长为云原生生态的基石之一。它没有彻底改变无服务器计算的本质,但它给了开发者一种选择:在享受Kubernetes生态的同时,也能获得无服务器架构的便利。这种“既要又要”的平衡,正是现代云原生架构的精髓。如今,Knative已经成为阿里云、IBM、Google Cloud等主流云厂商的标准配置,每天处理着数以亿计的事件和请求。它证明了,即使是在Kubernetes这个已经足够复杂的系统中,仍然有创新的空间——只要你敢于直面复杂性,并将其转化为优雅的抽象。
站在软件博物馆的展柜前,Knative的展品可能只是一段代码,一个徽标,或者一张架构图。但它的故事,却是一部关于如何驯服复杂性、如何平衡开放与实用、如何在巨人肩膀上继续创新的科技史。它告诉我们,真正优秀的软件,不是凭空创造新世界,而是让已有的世界运转得更好。
对技术发展和工程实践的推动程度
对商业模式和市场格局的影响深度
在科技文化和社会层面的持久影响力
用户群体的广度和普及程度