Knative 项目简介
读音为“kay-nay-tiv”,由Google于2018年7月正式发布
Kubernetes平台的原生扩展组件,让其能够轻松地部署、运行和管理Serverless类型的云原生应用
由RedHat、Google和IBM等公司,以及各种初创公司组成的开源社区共同维护
目标在于Serverless技术标准化
Knative 是什么
基于 Kubernetes 平台,用于部署和管理现代 serverless 工作负载。是Serverless平台,而非Serverless的实现。
Knative 架构体系
遵照Kubernetes的范式,以扩展的方式,通过自定义API资源类型支持
自动化完成服务的部署和扩缩容(Knative Serving)
标准化事件驱动基础设施(Knative Eventing)
Knative Serving
Knative Serving 说明
1. 部署、管理及扩展无状态应用
2. 支持由请求驱动计算
3. 支持缩容至0
Knative Serving 组件
1. Serving Controller
2. Resources API
1. Service
2. Configuration
3. Revision
4. Route
Knative Eventing
Knative Eventing 说明
1. 以声明的方式创建对事件源的订阅,并将事件路由到目标端点
2. 事件订阅、传递和处理
3. 基于pub/sub模型连接Knative的工作负载
Knative Eventing 组件
1. Eventing Controller
2. Resources API
1. Broker
2. Trigger
3. EventType
Knative 适合运行的应用类型
Knative仅适合运行特定类型的应用:无状态、容器化的服务器应用
1. 监听于某套接字之上提供服务的应用,不适合运行批处理作业;
2. 仅支持无状态应用,同一服务的各实例间无差别,可简单进行扩容和缩容;
3. 仅支持通过HTTP/1、HTTP/2或gRPC通信的服务端应用;
4. 应用程序要能够构建为OCI容器镜像;
如何获取Knative服务
自行部署Knative
1. 需要事先准备出Kubernetes集群
2. 事先选定一个可用的网络层来路由和治理流量
1. Istio(istio-ingressgateway)
2. Contour
3. Kourier
基于Knative的商业产品
1. Cloud Native Runtimes for VMware Tanzu
2. Google Cloud Run:Google完全托管(包括Kubernetes集群)的Knative平台
3. Google Cloud Run for Anthos/GKE:GKE集群中托管的Knative安装
4. IBM Cloud Kubernetes Service:IKS集群中托管的Knative安装
5. Red Hat OpenShift Serverless:Openshift托管的Openshift集群上的Knative安装
6. Pivotal Function Service(PFS):在Kubernetes上构建和运行函数、应用程序和容器的平台
Knative与Kubernetes
Knative为Kubernetes扩展出的功能有Serving和Eventing。
Serving
1. 替代Deployment控制器,负责编排运行基于HTTP协议的无状态应用
2. 额外提供的功能特性
1. Knative的Service对象,相当于Kubernetes上的 Service+Deployment 的功能
2. 基于单个请求进行负载均衡
3. 基于请求的快速、自动化扩缩容,并支持收缩至0实例
4. 通过在Pod扩展时缓冲请求来削峰填谷
5. 流量切分
Eventing
声明式事件配置接口。
参考文档
https://knative.dev/docs/concepts/