概念¶
本节中的文档解释了常用的Knative概念和抽象,并帮助您更好地理解Knative是如何工作的。
什么是 Knative?¶
Knative是一个平台无关的解决方案,用于运行无服务器部署。
Knative 服务¶
Knative Serving将一组对象定义为Kubernetes自定义资源定义(CRDs)。 这些资源用于定义和控制无服务器工作负载在集群上的行为。
主要的Knative服务资源是服务、路由、配置和修订:
-
服务:
service.serving.knative.dev
资源自动管理您的工作负载的整个生命周期。 它控制其他对象的创建,以确保你的应用程序在每次服务更新时都有路由、配置和新的修订。 服务可以定义为始终将通信路由到最新修订或固定修订。 -
路由:
route.serving.knative.dev
资源将一个网络端点映射到一个或多个修订。 您可以通过多种方式管理流量,包括部分流量和命名路由。 -
配置:
configuration.serving.knative.dev
资源为您的部署维护所需的状态。 它在代码和配置之间提供了清晰的分离,并遵循了十二因素应用程序方法。 修改配置会创建一个新的修订。 -
修订:
revision.serving.knative.dev
资源是对工作负载进行的每次修订的代码和配置的时间点快照。 修订是不可变的对象,只要有用就可以保留。 Knative服务修订可以根据传入的流量自动缩放。
有关资源及其交互的更多信息,请参见serving
Github存储库中的资源类型概述。
Knative 事件¶
Knative 事件是一个 API 集合,它使您能够在应用程序中使用事件驱动的体系结构。 可以使用这些 API 创建将事件从事件生产者路由到事件消费者(称为接收事件的接收器)的组件。 还可以将接收器配置为通过发送响应事件来响应 HTTP 请求。
Knative 事件使用标准的 HTTP POST 请求在事件生产者和接收器之间发送和接收事件。 这些事件符合CloudEvents 规范,该规范支持在任何编程语言中创建、解析、发送和接收事件。
Knative 事件组件是松散耦合的,可以彼此独立地开发和部署。 任何生产者都可以在有活动事件消费者监听这些事件之前生成事件。 在生产者创建这些事件之前,任何事件消费者都可以表达对一类事件的兴趣。