译者:陈佳栋、宋净超、孙海洲、徐鹏、邱世达

Knative 是一个基于 Kubernetes 的,用于构建、部署和管理现代 serverless 应用的平台。

Getting Started with Knative

是一本由 Pivotal 公司赞助 O’Reilly 出品的电子书,公众号后台回复”knative“获取下载地址。本书中文版由 ServiceMesher 社区自发翻译。

前言

Kubernetes 赢了。这不是夸大其词,事实就是如此。越来越多的人开始基于容器部署,而 Kubernetes 已经成为容器编排的事实标准。但是,Kubernetes 自己也承认,它是一个

容器

而不是

代码

平台。它可以作为一个运行和管理容器的很好的平台,但是这些容器是如何构建、运行、扩展和路由很大程度上是由用户自己决定的。这些是 Knative 想要补充的缺失部分。

也许你已经在生产上使用 Kubernetes,或者你是一个前沿技术爱好者,梦想着将你基于 OS/2 运行的组织现代化。不管怎样,本报告都没有假定太多东西,只是要求您知道容器是什么,具有 Kubernetes 的一些基本知识,可以访问 Kubernetes 集群。如果这些您都不具备的话,那么 Minikube 是一个很好的选择。

我们将使用大量代码示例和预先构建的容器镜像,这些镜像我们都为读者开源,您可以从 github.com/gswk 找到所有代码示例,并在 hub.docker.com/u/gswk 找到所有容器镜像。您还可以在 gswkbook.com 找到这两个存储库以及其他重要参考资料的链接。

目标读者

我们本质上是开发人员,所以这份报告主要是针对开发人员编写的。在整个报告中,我们将探索 serverless 架构模式,并向开发人员展示自服务用例示例(例如构建和部署代码)。然而,Knative 吸引了不同角色的技术人员。特别是,将 Knative 组件作为更大平台的一部分或与他们的系统集成的想法会引起运维和平台构建者们的极大兴趣。当这些受众探索如何使用Knative 来实现其特定目的时,本报告将对他们非常有用。

你将学到什么

尽管本报告并不旨在详解 Knative 的全部功能,但已足够深入,可以带您入门 Knative,了解它的工作原理和使用方式。初步了解了 Knative 后,我们将花一些时间研究如何使用它的每个主要组件。然后转到一些高级用例,最后通过构建一个真实的示例应用来结束,该应用将充分利用您在本报告中学到的所有知识。

Knative 概述

我们有一个信念:以平台的方式提供软件是一个最佳选择。事实证明,标准化的开发和部署流程能让开发人员更专注于新功能的研发,从而减少时间和金钱上的消耗。不仅如此,确保应用程序之间的一致性也意味着其更容易打补丁,更新和监控,从而让运维工作也更加高效。Knative 的目标就是成为这样的现代化平台。

什么是 Knative

我们先来看看 Knative 的目标。Knative 的目标是在基于 Kubernetes 之上为整个开发生命周期提供帮助。它的具体实现方式是:首先使你作为开发人员能够以你想要的语言和以你想要的方式来编写代码,其次帮助你构建和打包应用程序,最后帮助你运行和伸缩应用程序。

为此,Knative 将重点放在三个关键组件上:build(构建)你的应用程序,为其提供流量serving(服务),以及确保应用程序能够轻松地生产和消费event(事件)。

Build(构建)

通过灵活的插件化的构建系统将用户源代码构建成容器。目前已经支持多个构建系统,比如 Google 的 Kaniko,它无需运行 Docker daemon 就可以在 Kubernetes 集群上构建容器镜像。

Serving(服务)

基于负载自动伸缩,包括在没有负载时缩减到零。允许你为多个修订版本(revision)应用创建流量策略,从而能够通过 URL 轻松路由到目标应用程序。

Event(事件)

使得生产和消费事件变得容易。抽象出事件源,并允许操作人员使用自己选择的消息传递层。

Knative 是以 Kubernetes 的一组自定义资源类型(CRD)的方式来安装的,因此只需使用几个 YAML 文件就可以轻松地开始使用 Knative 了。

Kubernetes 知识
由于 Knative 是基于 Kubernetes 的一系列扩展,因此建议你先了解下 Kubernetes 和 Docker 的架构和术语。今后我们会提及以下术语,比如 namespace、Deployment、ReplicaSet 和 Pod。熟悉这些 Kubernetes 术语将帮助你在阅读时更好地理解 Knative 的基本工作。如果你对这些都不熟悉,那么这两个链接:Kubernetes 和 Docker 上都有很棒的培训材料,可以直接在浏览器上阅读。

无服务器架构(serverless)?

到目前为止,我们已经讨论了应用程序的容器化。但都2019年了,我们读了半章却还没有提到“无服务器架构(serverless)”这个词。也许作为当今技术中被提到最多的一个词,无服务器架构(serverless)仍然在寻找一个整个行业都能认同的定义。许多人都同意这个理念的影响最大的是代码量,比如以前需要编写大型、单一的应用程序,现在你只需编写通过

事件

来调用的小型、单一用途的函数即可。这些事件可以简单到是一个 HTTP 请求或一个来自消息通道(如 Apache Kafka)的消息。同时事件也可能是间接的,比如这些操作:将图像上传到 Google Cloud Storage或更新了 Amazon 的 DynamoDB 中的一张表。

许多人也都同意这表示着你的代码只在处理请求时才用到计算资源。对于很多托管服务来说,如 Amazon 的 Lambda 或 Google Cloud Functions,这意味着你只需要为活跃期间的计算服务付费,而不是一台7x24小时运行并可能在大部分时间内无所事事的虚拟机。在本地或非托管的无服务器架构(serverless)平台上,则表示代码可以只在需要时运行,在不需要时就停止,从而让你的基础设施能在其他方面自由使用计算资源。

在这些基础原理之上的是一场圣战。有些人坚持无服务器架构(serverless)只适合在托管的云环境中运行,在本地运行这样的平台完全是不对的。其他人则认为它更像是一种哲学理论上的设计。也许这些定义最后会合并,也许不会。就目前来说,随着无服务器架构(serverless)普及率的持续增长,Knative 最有可能成为其标准。

为什么是 Knative ?

除了关于无服务器架构(serverless)定义的争论之外,下一个逻辑问题是“为什么创造的是 Knative ?”随着基于容器的架构的流行和 Kubernetes 的普及,我们又开始见到一些相同的问题,这些问题之前也出现在平台即服务(PaaS)方案上并推动了其发展。如在构建容器时,我们该如何保证其一致性?谁负责给所有东西打补丁?如何根据需求来伸缩?如何实现零停机部署?

虽然 Kubernetes 确实已经演进并开始解决其中一些问题,但是之前提到的关于不断发展的无服务器架构(serverless)的概念方面产生了更多的问题。如何管理多个事件类型的一致性?如何定义事件源和目标?

许多无服务器架构(serverless)或函数即服务(FaaS)框架都尝试回答这些问题,但它们都在用不同的方式来解决问题,且不是所有的解决方案都用到了 Kubernetes。而 Knative 构建在 Kubernetes 的基础上,并为构建和部署无服务器架构(serverless)和基于事件驱动的应用程序提供了一致的标准模式。Knative 减少了这种新的软件开发方法所产生的开销,同时还把路由(routing)和事件(eventing)的复杂性抽象出来。

结论

现在我们已经很好地理解了什么是 Knative 以及它被创造出来的原因,接下来我们将进一步深入了解它。下一章将介绍 Knative 的三个关键组件。我们将详细研究它们,并解释它们是如何协同工作的,以及如何充分发挥它们的潜力。之后,我们将了解如何在 Kubernetes 集群上安装 Knative 和一些更高级的用例。最后,我们将通过演示一个 demo 来展示你能在这个报告中学习到的大部分内容。

Knative 入门系列1:knative 概述相关推荐

  1. Spring入门系列之Spring概述

    ​ Spring是一个开源框架, Spring为简化企业级开发而生,使用Spring,JavaBean就可以实现很多以前要靠EJB才能实现的功能.同样的功能,在EJB中要通过繁琐的配置和复杂的代码才能 ...

  2. ASP.NET AJAX入门系列(1):概述

    经常关注我的Blog的朋友可能注意到了,在我Blog的左边系列文章中,已经移除了对Atlas学习手记系列文章的推荐,因为随着ASP.NET AJAX 1.0 Beta版的发布,它们已经不再适用,为了不 ...

  3. 深度学习入门系列1:多层感知器概述

    本人正在学习<deep learning with python>–Jason Brownlee,有兴趣的可以一起学习. 仅供学习参考,不做商用! 大家好,我技术人Howzit,这是深度学 ...

  4. CSS入门系列(一)概述和html结合的方式

    CSS入门系列(一)概述&和html结合的方式 自己在关注招聘信息的时候经常发现很多公司都要求要有前端的基础,不一定搞前端,但是前端的基础是要有的.所以,我就学习了一下前端的技术. 本文系列是 ...

  5. Java极速入门系列:第一章Java概述、Java环境、IDEA开发工具

    Java极速入门-第一章Java概述.Java环境.IDEA开发工具 一.什么是Java 1.好的编程语言的特性 2.Java的特点 3.Java的运行机制 4.Java的三大体系 5.Java环境 ...

  6. 【转】ASP.NET AJAX入门系列

    ASP.NET AJAX入门系列将会写关于ASP.NET AJAX一些控件的使用方法以及基础知识,其中部分文章为原创,也有一些文章是直接翻译自官方文档,本部分内容会不断更新. 目录 ASP.NET A ...

  7. (视频+图文)机器学习入门系列-第15章

    机器学习入门系列,黄海广老师主讲.本站将持续更新,ppt.代码.课后习题见文末. 本系列的目录 01.引言 02.回归 03.逻辑回归 04.朴素贝叶斯 05.机器学习实践 06.机器学习库Sciki ...

  8. (视频+图文)机器学习入门系列-第13章 降维

    机器学习入门系列,黄海广老师主讲.本站将持续更新,ppt.代码.课后习题见文末. 本系列的目录 01.引言 02.回归 03.逻辑回归 04.朴素贝叶斯 05.机器学习实践 06.机器学习库Sciki ...

  9. (视频+图文)机器学习入门系列-第12章 聚类

    机器学习入门系列,黄海广老师主讲.本站将持续更新,ppt.代码.课后习题见文末. 本系列的目录 01.引言 02.回归 03.逻辑回归 04.朴素贝叶斯 05.机器学习实践 06.机器学习库Sciki ...

最新文章

  1. Oracle Listener 动态注册 与 静态注册
  2. TDSQL“相似查询工具MSQL+”入选VLDB论文
  3. numpy 读取txt为array 一行搞定
  4. 飘逸的python - 字典合并值相加
  5. [转载]各种在线api地址
  6. 单击选定单元格后输入新内容_2015年计算机一级msoffice考前简答题练习
  7. Android Studio Gradle 缓存文件夹设置
  8. Tkinter注册界面判断用户名是否唯一的合法性验证(Python3.7)
  9. matlab2014a中输入中文显示不出来,显示的是方框
  10. 央视《家有妙招》整理版,共250招
  11. 大数据、物联网技术、物联网卡,对我们生活带来的影响
  12. CVPR2021:单目实时全身动作捕捉(清华大学)
  13. 笔记本计算机被限制无法上网,笔记本无线wifi连接受限制的解决办法
  14. Codeforces894A QAQ
  15. 如何在AI中复制路径制作唯美动画
  16. 湖南大学计算机专业女生宿舍,2020年湖南大学新生宿舍环境条件,大一新生男生女生宿舍内部图片【多图】...
  17. 华为往事(五)--Camp;C08
  18. 奇瑞鲍思语:时尚引领科技,奇瑞抓住新能源小车趋势
  19. ORA-01779: 无法修改与非键值保存表对应的列
  20. GRUB2命令和环境变量列表

热门文章

  1. 洛谷P1417 烹调方案
  2. CactiEz 无法登陆 、重启不画图处理
  3. druid+spring配置
  4. RequireJs的使用和快速理解
  5. asp.net学习之 数据绑定控件--List数据绑定控件
  6. 企业合理避税三大技巧
  7. mysql 数据库快照迁移_快照方式备份mysql 数据库
  8. 湖南科技学院计算机科学与技术分数,湖南科技学院计算机科学与技术专业2016年在河南理科高考录取最低分数线...
  9. aac文件损坏修复软件_Mac不能安装非信任应用的解决方法 MAC软件安装必读 打不开身份不明的开发者?文件已损坏?...
  10. html5拖动图像的关键字,6.7 拖放图像 - HTML5 Canvas 实战