作者|刘宇

前言:Knative 是一款根据 Kubernetes 的 Serverless 结构。其目标是拟定云原生、跨平台的 Serverless 编列规范。

Knative 介绍

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 事情驱动形式做了一套完好的规划,包含外部事情源的接入、事情注册、订阅以及事情过滤等功能。事情模型能够有效地解耦生产者和顾客的依赖关系。生产者能够在顾客发动之前生成事情,顾客也能够在生产者发动之前监听事情。

Serverless 工程实践 | 零基础上手 Knative 应用
在 Knative 系统架构下各人物的协作关系

  • Serving:办理 Serverless 作业负载,能够和事情很好地结合,并且供给了根据恳求驱动的主动弹性才能,并且在没有服务需求处理的时分能够缩容到零。Serving 组件的职责是办理作业负载以对外供给服务。Serving 组件最重要的特性就是主动弹性的才能。现在,其弹性鸿沟无限制。Serving 还具有灰度发布才能。

Knative 布置

本文将会以在阿里云布置 Kantive 服务为例,具体说明怎么布置 Knative 相关服务。首要,登录到容器服务办理控制台,如图所示。

Serverless 工程实践 | 零基础上手 Knative 应用
阿里云容器服务办理控制台

如没有集群,能够先挑选创立集群,如下图所示。

Serverless 工程实践 | 零基础上手 Knative 应用
装备与创立集群

创立集群比较缓慢,耐性等候集群创立完结,成功之后如图所示。

Serverless 工程实践 | 零基础上手 Knative 应用
集群创立成功示意图

进入集群之后,挑选左侧的“运用”,找到 “Knative” 并点击“一键布置”,如图所示。

Serverless 工程实践 | 零基础上手 Knative 应用
创立 Knative 运用

稍等片刻,Knative 安装完结之后,能够看到核心组件现已处于“已布置”状况,如图所示。

Serverless 工程实践 | 零基础上手 Knative 应用
Knative 运用布置完结

至此,咱们完结了 Knative 的布置。

体验测验

首要需求创立一个 EIP,并将其绑定到 API Server 服务上,如下图所示。

Serverless 工程实践 | 零基础上手 Knative 应用
图为 API Server 绑定 EIP

完结之后,进行 Serverless 运用的测验。挑选运用中的 “Kantive 运用”,并且在服务办理中挑选“运用模板创立”,如图所示。

Serverless 工程实践 | 零基础上手 Knative 应用
快速创立示例运用

创立完结之后,能够看到控制台现已出现一个 Serverless 运用,如图所示。

Serverless 工程实践 | 零基础上手 Knative 应用
示例运用创立成功

此时,咱们能够点击运用称号检查该运用的概况,如下图所示。

Serverless 工程实践 | 零基础上手 Knative 应用
检查示例运用概况

为了便于测验,能够在本地设置 Host:

101.200.87.158 helloworld-go.default.example.com

设置完结之后,在浏览器中翻开系统分配的域名,能够看到现已输出预期的成果,如图所示。

Serverless 工程实践 | 零基础上手 Knative 应用
浏览器测验示例运用

至此,咱们完结了一个根据 Knative 的 Serverless 运用的布置和测验。

此时,咱们还能够经过 CloudShell 进行集群的办理等。在集群列表页面,挑选经过 CloudShell 进行办理,如图所示。

Serverless 工程实践 | 零基础上手 Knative 应用
集群办理列表

经过 CloudShell 办理已创立的集群,如图所示。

Serverless 工程实践 | 零基础上手 Knative 应用
CloudShell 窗口

执行指令:

kubectl get knative

能够看到,刚布置的 Knative 运用,如图所示。

Serverless 工程实践 | 零基础上手 Knative 应用
CloudShell 检查 Knative 运用

关于作者:刘宇(江昱)国防科技大学电子信息专业在读博士,阿里云 Serverless 产品司理,阿里云 Serverless 云布道师,CIO 学院特聘讲师。