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

熵桥棱镜
• 阅读 1332

作者|刘宇

前言: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 学院特聘讲师。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Peter20 Peter20
4年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
Stella981 Stella981
3年前
GitLab 11.6发布,支持Serverless服务、加速整合Kubernetes
!(https://oscimg.oschina.net/oscnet/3d5221974d344c2491db766e10e1021d.gif)近日GitLab 11.6版发布,新版本整合Serverless服务管理平台Knative,原生支持企业用户,开发Serverless应用,并加速拥抱多云架构,通过GitLab将Serverless
Wesley13 Wesley13
3年前
Knative 实战:基于 Knative Serverless 技术实现天气服务
上一期我们介绍了如何基于KnativeServerless技术实现天气服务上篇(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzUzNzYxNjAzMg%3D%3D%26mid%3D100003014%26idx%3
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
3年前
Knative Serverless 之道:如何 0 运维、低成本实现应用托管?
作者|牛秋霖(冬岛) 阿里云容器平台技术专家关注“阿里巴巴云原生”公众号,回复关键词\\“1205”\\即可观看KnativeDemo演示视频。导读:Serverless无疑是当前最热的云原生话题,那么作为业务的开发人员或者运维人员咱们应该怎么看待这个事情?云原生和Serverless到底有什么关
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Knative 应用在阿里云容器服务上的最佳实践
作者|元毅阿里云智能事业群高级开发工程师相信通过前面几个章节的内容,大家对Knative有了初步的体感,那么在云原生时代如何在云上玩转Knative?本篇内容就给你带来了 Knative应用在阿里云容器服务上的最佳实践。何为最佳实践,就是按照生产可用的方式部署服务,提供服务监控告警以及链路追踪。我们按照如下3个部分内容进行:
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(