导读:Knative是Google在2018的Google Cloud Next大会上发布的一款基于Kubernetes的Serverless框架。
作者:刘宇
来源:大数据DT(ID:hzdashuju)
其基本信息如表2-2所示。
▼表2-2 Knative基本信息
Knative一个很重要的目标就是制定云原生、跨平台的Serverless编排标准。Knative是通过整合容器构建(或者函数)、工作负载管理(和动态扩缩)以及事件模型来实现Serverless标准的。Knative社区的主要贡献者有Google、Pivotal、IBM、Red Hat。CloudFoundry、OpenShift这些PaaS提供商都在积极地参与Knative的建设。
01 工作原理
如图2-14所示,Knative是建立在Kubernetes和Istio平台之上的,使用了Kubernetes提供的容器管理组件(deployment、replicaset和pod等),以及Istio提供的网络管理组件(ingress、LB、dynamic route等)。
Knative中有两个重要的组件,分别是为其提供流量的Serving(服务)组件以及确保应用程序能够轻松地生产和消费事件的Event(事件)组件。
其中,Serving组件基于负载自动伸缩,包括在没有负载时缩减到零,允许使用者为多个修订版本应用创建流量策略,从而通过URL轻松路由到目标应用程序;而Event组件的作用是使生产和消费事件变得容易,允许操作人员使用自己选择的消息传递层。
除了Serving和Event组件之外,Build也是Kantive的组件之一。其提供“运行至完成”的显示功能,这对创建CI/CD工作流程很有用,通过灵活的插件化的构建系统将用户源代码构建成容器。
目前,其已经支持多个构建系统,比如Google的Kaniko,它无须运行Docker Daemon就可以在Kubernetes集群上构建容器镜像。Serving使用它将源存储库转换为包含应用程序的容器镜像。
在诸多Serverless开源项目中,Knative的优势也是较为明显的。一方面,Knative以Kubernetes为底层框架,与Kubernetes生态结合得更紧密。无论是云上Kubernetes服务还是自建Kubernetes集群,都能通过安装Knative插件快速地搭建Serverless平台。