简介:
knatvie是基于kubernetes平台,用于部署和管理现代Serverless工作负载,是Serverless平台,而非Serverless的实现。它是kubernetes平台的原生扩展组件,让其能够轻松地部署、运行和管理Serverless类型的云原生应用。目标在于Serverless技术标准化
注意:Knative并未提供Faas
Knative为Kubernetes扩展出的功能
Serving
替代Deployment控制器,负责编排运行基于HTTP协议的无状态应用
额外的功有特性:
- Knative的Service对像,相当于Kubernetes上的Service+Deployment的功能
- 基于单个请求进行负载均衡
- 基于请求的快速 、自动化扩缩容,并支持将Pod收缩至0实例
- 通过在Pod扩展时缓冲请求来削峰填谷
- 流量切分
Eventing
- 声明式配置接口
缺点:冷服务启动延时
Knative适合运行的应用类型
Knative仅适合运行特定的类型的应用:无状态、容器化的服务器应用
监听于某套接字之上提供服务的应用,不适合运行批处理作业
仅支持通过HTTP/1、HTTP/2或gPRC通信的服务端应用
组件介绍:
Serving
- 部署、管理及扩展无状态应用
- 支持由请求驱动计算
- 支持缩容至0
Eventing
- 以声明的方式创建对事件源的订阅,并将事件路由到目标端点
- 事件订阅、传递和处理
- 基于pub/sub模型连接knative的工作负载
Build
- 从源代码构建出应用镜像
- 已经由独立的Tekton项目取代
CRD介绍:
主要包含四个CRD
- Service
对自动编排Serverless类型应用的功能的抽像,负责自动管理工作负载的整个生命周期
- Configuation
反映了Service当前期望状态(Spen)的配置,Service对像的更新,也将导致Configuation的更新
- Revision
Service的每次代码或配置变理都会生成一个Revision
- Route
将请求流量路由到目标Revion
支持将流量按比例切分并路由到多个Revision