Knative

Knative

简介

Knative 是 Google 2018 年 在 Google Cloud Next 2018 上发布的基于 Kubernetes 的 Serverless 解决方案,

旨在标准化 Serverless,简化其学习成本。

其将重点放在三个关键组件上:

  • build(构建)你的应用程序,为其提供流量

  • serving(服务),以及确保应用程序能够轻松地生产和消费

  • event(事件)

Serverless

Serverless 架构让开发者在构建应用的过程中无需关心计算资源的获取和运维,由服务提供商按需分配计算资源并保证应用执行的 SLA,商业策略上也不同于传统资源的计费模式,按照调用次数进行计费,避免了资源冗余造成的浪费,有效节省应用成本。

Serverless 大体上可以分为两种类型:Baas(Backend as a Service) 和 Faas(Functions as a Service)。

  • BaaS(Backend as a Service): 后端即服务,服务商为客户 (开发者) 提供整合云后端的服务,如提供文件存储、数据存储、推送服务、身份验证服务等功能,以帮助开发者快速开发应用。
  • FaaS(Function as a Service) : 函数即服务,服务商提供一个平台,允许客户开发、运行和管理应用程序功能,而无需构建和维护基础架构。按照此模型构建应用程序是实现“无服务器”体系结构的一种方式,通常在构建微服务应用程序时使用。

传统 Serverless 问题

  • 厂商绑定
  • 没有行业标准

Knaive 优点

  • 便利性:Knative 以 Kubernetes 和 istio 作为其底层框架,因此无论是线上还是线下,任何 Kubernetes 集群,无论是云上 Kubernetes 服务还是自建 Kubernetes 集群,都能通过安装 istio 和 knative 插件快速的搭建 serverless 平台。
  • 标准化:Knative 联合 CNCF,把所有事件标准化,统一为 CloudEvent,提供事件的跨平台,同时让函数和具体的调用方能够解耦。
  • 服务间解耦:使用 Knative 使得应用不在与底层依赖服务强绑定,可以跨云实现业务互通
  • 成熟的生态:Knative 基于 Kubernetes 体系构建,与 kubernetes 生态结合更紧密;
  • 自动伸缩:监控应用的请求,并自动扩缩容, 得益于 Istio 能力加持,天生支持蓝绿发布、回滚功能,方便应用发布流程。
  • 应用监控:支持日志的收集、查找和分析,并支持 VAmetrics 数据展示、调用关系 tracing

架构

image-20191010092712656

组件

为了实现 serverless 应用的管理,knative 把整个系统分成了三个部分:

  • Build:构建系统,把用户定义的函数和应用 build 成容器镜像
  • Serving:服务系统,用来配置应用的路由、升级策略、自动扩缩容等功能
  • Eventing:事件系统,用来自动完成事件的绑定和触发

参考

  1. https://www.infoq.cn/article/2018/07/knative-kubernetes-serverless
  2. https://www.servicemesher.com/getting-started-with-knative/knative-overview.html
  3. https://cizixs.com/2018/08/25/knative-serverless-platform/
updatedupdated2024-08-252024-08-25