初识 Knative: 跨平台的 Serverless 编排框架_xstardust的博客-程序员信息网

技术标签: 镜像  函数  源码  

摘要: Knative 是什么 Knative 是 Google 在 2018 的 Google Cloud Next 大会上发布的一款基于 Kubernetes 的 Serverless 框架。Knative 一个很重要的目标就是制定云原生、跨平台的 Serverless 编排标准。

Knative 是什么

Knative 是 Google 在 2018 的 Google Cloud Next 大会上发布的一款基于 Kubernetes 的 Serverless 框架。Knative 一个很重要的目标就是制定云原生、跨平台的 Serverless 编排标准。Knative 是通过整合容器构建(或者函数)、工作负载管理(和动态扩缩)以及事件模型这三者来实现的这一 Serverless 标准。Knative 社区的主要贡献者有 Google、Pivotal、IBM、Red Hat。可见其阵容强大, CloudFoundry、OpenShift 这些 PAAS 提供商都在积极的参与 Knative 的建设。

Knative 出现的背景

在 Knative 之前社区已经有很多 Serverless 解决方案,如下所示这些:

  • kubeless
  • Fission
  • OpenFaaS
  • Apache OpenWhisk
  • ...

除了上面这些社区的开源解决方案以外各大云厂商也都有各自的 FAAS 产品的实现比如:

  • AWS Lambda
  • Google Cloud Functions
  • Microsoft Azure Functions
  • 阿里云的函数计算

业务代码部署到 Serverless 平台上就离不开源码的编译、部署和事件的管理。然而无论是开源的解决方案还是各公有云的 FAAS 产品大家的实现方式大家都各不相同,缺乏统一的标准导致市场呈现碎片化。因此无论选择哪一个方案都面临供应商绑定的风险。

没有统一的标准、市场的碎片化这对云厂商来说用户 Serverless 上云就比较困难,对于 PAAS 提供商来说很难做一个通用的 PAAS 平台给用户使用。基于这样的背景 Google 牵头联合 Pivotal、IBM、Red Hat 等发起了 Knative 项目。

我们看一下在 Knative 体系下各个角色的协作关系:

  • Developers
    Serverless 服务的开发人员可以直接使用原生的 Kubernetes API 基于 Knative 部署 Serverless 服务
  • Contributors
    主要是指社区的贡献者
  • Operators
    Knative 可以被集成到任何支持的环境中,比如:云厂商、或者企业内部。目前 Knative 是基于 Kubernetes 来实现的,有 Kubernetes 的地方就可以部署 Knative
  • Users
    终端用户通过 Istio 网关访问服务,或者通过事件系统触发 Knative 中的 Serverless 服务

Knative 核心组件

作为一个通用的 Serverless 框架 Knative 由三个核心组件组成:

  • Build:提供从源码到镜像的通用构建能力
  • Eventing:提供了事件的接入、触发等一整套事件管理的能力
  • Serving:管理 Serverless 工作负载,可以和事件很好的结合并且提供了基于请求驱动的自动扩缩的能力,而且在没有服务需要处理的时候可以缩容到零个实例

Build 组件主要负责从代码仓库获取源码并编译成镜像和推送到镜像仓库。并且所有这些操作都是在 Kubernetes Pod 中进行的。

Eventing 组件针对 Serverless 事件驱动模式做了一套完整的设计。包括外部事件源的接入、事件注册和订阅、以及对事件的过滤等功能。事件模型可以有效的解耦生产者和消费者的依赖关系。生产者可以在消费者启动之前产生事件,消费者也可以在生产者启动之前“监听事件”。

Serving 组件的职责是管理工作负载以对外提供服务。对于 Knative Serving 组件最重要的特性就是自动伸缩的能力,目前伸缩边界支持从 0 到无限大。Serving 还有一个比较重要的功能就是灰度发布能力。

Knative 虽然是基于 Kubernetes 实现,不过这并不代表 Kubernetes 的所有功能都能在 Knative 中使用。因为 Knative 针对 Serverless 场景做了专门的设计,如一个 Pod 中只能有一个 Container,一个 Container 只能有一个 Port 等。具体这些详细的内容我们会在后续的文章中陆续介绍。

Knative 的优势

Knative 一方面基于 Kubernetes 实现 Serverless 编排,另外一方面 Knative 还基于 Istio 实现服务的接入、服务路由的管理以及度发布等功能。Knative 是在已有的云原生基础之上构建的,有很好的社区基础。Knative 一经开源就得到了大家的追捧,其中的主要缘由有:

  • Knative 的定位不是 PAAS 而是一个通用的 Serverless 编排框架,大家可以基于此框架构建自己的 Serverless PAAS
  • Knative 对于 Serverless 架构的设计是标准先行。比如之前的 FAAS 解决方案每一个都有一套自己的事件标准,相互之间无法通用。而 Knative 首先提出了 CloudEvent 这一标准,然后基于此标准进行设计
  • 完备的社区生态:Kubernetes、ServiceMesh 等社区都是 Knative 的支持者
  • 跨平台:因为 Knative 是构建在 Kubernetes 之上的,而 Kubernetes 在不同的云厂商之间几乎可以提供通用的标准。所以 Knative 也就实现了跨平台的能力,没有供应商绑定的风险
  • 完备的 Serverless 模型设计:和之前的 Serverless 解决方案相比 Knative 各方面的设计更加完备。比如:

    • 事件模型非常完备,有注册、订阅、以及外部事件系统的接入等等一整套的设计
    • 比如从源码到镜像的构建
    • 比如 Serving 可以做到按比例的灰度发布

关于 Knative 出现的背景、要解决的问题、核心概念以及其优势就介绍到这里,后续我们会有一系列的文章由浅入深的来介绍 Knative 的使用以及剖析其内部实现。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xstardust/article/details/90516059

智能推荐

Windows11 老爷机也尝鲜_姜戈12的博客-程序员信息网

vmware workstation 16 可以顺利安装的,到了实体机就有些麻烦了。需要 TPM ,8代以上CPU搜一下许有多相关文章,但是我手黑,无一成功。包括一下几种:替换DLL文件BIOS设置 securit boot安装器PE引导修复考虑到泄露版也不是正式版,不值得花太多功夫。外挂硬盘,直接用 RUFUS 安装成 WindowsToGo,一次成功!大概思路就是WTG跳过了安装过程,直接进入初始配置。...

机器人开发--编码器_worthsen的博客-程序员信息网_机器人编码器

机器人开发--编码器1 概述2 编码器介绍2.1 编码器定义2.2 编码器分类1 按码盘的刻孔方式不同分类(1)增量型(2)绝对值型(3)混合型2 按信号的输出类型分为3 以编码器机械安装形式分类4 以编码器工作原理可分为光学编码器磁编码器感应式电容式电涡流式旋变式2.3 主要厂家其他ABI(ABZ)信号和UVW信号PWM信号参考1 概述2 编码器介绍日系伺服厂家,一般将编码器、伺服驱动器、电机成套打包提供给客户;类似华为一样,软硬件自己搞,可以极限榨取硬件性能,构造自己的生态。如,安川、松下、三菱

重绘与回流(repaint和reflow)_MingleHDU的博客-程序员信息网

reflow:回流 回流:指计算页面布局。render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建。这就称为回流,每个页面至少需要一次回流,就是在页面第一次加载的时候。 repaint :重绘 重绘:当render tree中的一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如background-color。则就叫称为重绘。

杭电oj1018(Big Number)_傅某人__的博客-程序员信息网

杭电oj1018(Big Number)Problem DescriptionIn many applications very large integers numbers are required. Some of these applications are using keys for secure transmission of data, encryption, etc. In t...

最全的Windows注册表介绍及优化方法_chongjian6659的博客-程序员信息网

注册表(registry)原意是登记表,是Windows里的一个重要数据库,用于存储系统和应用程序的设置信息,就像户口本上登记家庭住址和邮编信息一样。如果一个人户口本上内容丢失,那么他在户籍管理系统上就成了一个不存在的人。Windows也是一样,如果注册表上的环境信息或者驱动信息丢失,就会造成...

MySQL DATE_ADD() -- 向日期添加指定的时间间隔_只为伊人2232的博客-程序员信息网

说明DATE_ADD() 函数向日期添加指定的时间间隔。语法DATE_ADD(date,INTERVAL expr type)-- date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。type 参数是添加的单位type 参数可选的值Type 值MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEARSECOND_MICROSECONDMINUTE_MICROSECONDMINUTE_SECONDHOUR

随便推点

spring框架的IOC容器和Bean配置_ReflectMirroring的博客-程序员信息网

IOCIOC全名是inversion of control ,就是反转控制,也叫控制反转,其实它也不是听得那么高达上,其实就是一种思想,之前我们创建类后需要new对象,对象的创建的控制权是在我们程序员的手上,现在我们将创建对象的权力交给spring,我们不需要知道对象是如何创建的,只知道需要向spring要对象使用就行,这样提高了开发的效率这种将创建对象的权力交给spring的思想就是反转控...

python构造函数和析构函数_东木月的博客-程序员信息网_py构造函数

python构造函数和析构函数1、构造方法的使用​ 很多类都倾向于将对象创建为有初始化状态.因此类可以定义一个名为init()的特殊方法(构造方法)来实例化一个对象。 构造方法也叫做构造器,是指当实例化一个对象(创建一个对象)的时候,第一个被自动调用的方法。 演示1:构造方法被调用的契机class Person(): #构造方法 def __init...

Linux笔记④:帮助命令_XianhengL的博客-程序员信息网

1.man ( manual : 获得帮助信息 )命令格式: man [命令或配置文件] ·查看配置文件时不需写其绝对路径例: 查看ls命令的帮助信息 man ls ·查看时输入 /-l ,可高亮关键字-l例: 查看配置文件services的帮助信息 man services 例:查看passwd 配置文件的帮助 man 5 passwd2.whatis ( : 查看命令的简短信息 )命令格式: whatis [命令]3.apropos ( : 查看配置文件

职业选择测试发型软件,几款职业范发型,总有你喜欢的_一阵风清浪的博客-程序员信息网

上班怎能表现的不出众呢?从头开始吧,为你推荐几款特有职业范的发型,保证让你在众人面前眼睛一亮!职场发型推荐职场长发一:偏分的造型设计可是最显女生的优雅气质风的了,再搭配时尚的深棕色当要颜色与丰盈的长卷发造型更添职场女生的优雅淑女风。职场长发二:利用的是一九分的露额发型将女生精致的五官完美的呈现出来,再搭配时尚的棕色头发颜色与侧边丰盈的长卷发更添职场女生的优雅干练风。职场长发三:利用的是明亮的橘黄色...

oTMS借势互联网+ 解决物流业“信息孤立”痛点_Rank92的博客-程序员信息网

oTMS联合创始人兼COO段琰CNET科技资讯网 4月22日 北京消息:传统物流信息化行业正在被颠覆。4月21日,oTMS的联合创始人兼COO段琰表示:“传统物流行业有望搭上互联网化的‘快车’并实现转型升级。如果说‘微信连接人’,那么‘oTMS连接运输’。”物流信息化遇上“互联网+”在段琰看来,运输在实际工作中与互联网的原理非常类似,都...

【Visual C++】游戏开发笔记二十六 DirectX 11各组件的介绍&第一个DirectX 11 Demo的创建_浅墨_毛星云的博客-程序员信息网

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。http://blog.csdn.net/zhmxy555/article/details/7688515作者:毛星云    邮箱: [email protected]   这节笔记主要讨论DirectX 11现有的组件构成,随着DirectX各个版本的更新被时代抛弃的一些组件以及第一个围绕着DirectX 11 的Demo创建全过

推荐文章

热门文章

相关标签