Knative 简介
Knative 是一款基于 Kubernetes 的 Serverless 框架。其指标是制订云原生、跨平台的 Serverless 编排规范。Knative 通过整合容器构建(或者函数)、工作负载治理(动静扩缩)以及事件模型这三者实现其 Serverless 规范。
在 Knative 体系架构下,各角色的协作关系如下图所示。
- 开发者是指 Serverless 服务的开发人员能够间接应用原生 Kubernetes API 基于 Knative 部署 Serverless 服务。
- 贡献者次要是指社区的贡献者。
- Knative 能够被集成到反对的环境中,例如云厂商或者企业外部。目前,Knative 是基于 Kubernetes 来实现的,所以能够认为有 Kubernetes 的中央就能够部署 Knative。
- 用户指终端用户,其通过 Istio 网关拜访服务或者事件零碎触发 Knative 中的 Serverless 服务。
- 作为一个通用的 Serverless 框架,Knative 由 3 个外围组件组成。
- Tekton:提供从源码到镜像的通用构建能力。Tekton 组件次要负责从代码仓库获取源
- 码并编译成镜像,推送到镜像仓库。所有这些操作都是在 Kubernetes Pod 中进行的。
- Eventing:提供事件的接入、触发等一整套事件治理能力。Eventing 组件针对 Serverless 事件驱动模式做了一套残缺的设计,包含内部事件源的接入、事件注册、订阅以及事件过滤等性能。事件模型能够无效地解耦生产者和消费者的依赖关系。生产者能够在消费者启动之前生成事件,消费者也能够在生产者启动之前监听事件。
在 Knative 体系架构下各角色的协作关系
- Serving:治理 Serverless 工作负载,能够和事件很好地联合,并且提供了基于申请驱动的主动伸缩能力,而且在没有服务须要解决的时候能够缩容到零。Serving 组件的职责是管理工作负载以对外提供服务。Serving 组件最重要的个性就是主动伸缩的能力。目前,其伸缩边界无限度。Serving 还具备灰度公布能力。
Knative 部署
本节将会以在阿里云部署 Kantive 服务为例,具体阐明如何部署 Knative 相干服务。
首先,登录到容器服务治理控制台,如图所示为阿里云容器服务治理控制台。
如没有集群,能够先抉择创立集群,如图所示为配置与创立集群。
创立集群比拟迟缓,急躁期待集群创立实现,胜利之后如示意图所示。
进入集群之后,抉择左侧的“利用”,找到“Knative”并点击“一键部署”,如图所示。
稍等片刻,Knative 装置实现之后,能够看到外围组件曾经处于“已部署”状态,如
图所示。
至此,咱们实现了 Knative 的部署。
体验测试
首先须要创立一个 EIP,并将其绑定到 API Server 服务上,如图所示为 API Server 绑定 EIP。
实现之后,进行 Serverless 利用的测试。抉择利用中的“Kantive 利用”,并且在服务治理中抉择“应用模板创立”,如图疾速创立示例利用所示。
创立实现之后,能够看到控制台曾经呈现一个 Serverless 利用,如图所示为示例利用创立胜利。
此时,咱们能够点击利用名称查看该利用的详情,如图所示为查看示例利用详情。
为了便于测试,能够在本地设置 Host:
101.200.87.158 helloworld-go.default.example.com
设置实现之后,在浏览器中关上零碎调配的域名,能够看到曾经输入预期的后果,如图所示:浏览器测试示例利用。
至此,咱们实现了一个基于 Knative 的 Serverless 利用的部署和测试。
此时,咱们还能够通过 CloudShell 进行集群的治理等。在集群列表页面,抉择通过 CloudShell 进行治理,如图集群治理列表所示。
通过 CloudShell 治理已创立的集群,如图 CloudShell 窗口。
执行指令:
kubectl get knative
能够看到,刚部署的 Knative 利用,如图 CloudShell 查看 Knative 利用所示。