Knative简介

knative简介

  • Knative简介
    • 1.Knative定义
    • 2.Knative的主要功能
    • 3.Knative的核心组件
      • 3.1 Tekton Pipelines组件(Build组件)
      • 3.2 Serving
      • 3.3 Eventing
    • 4. 总结
    • 5. 参考

Knative简介

1.Knative定义

knative基于 Kubernetes 的平台,用于部署和管理现代无服务器工作负载

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

Knative 主要由 Build、Serving 和 Eventing 三大核心组件构成。Knative 正是依靠这三个核心组件,驱动着 Knative 这艘ServerLess巨轮前行。

友情链接:serverLess介绍

2.Knative的主要功能

  • 在几秒钟内建立可扩展、安全、无状态的服务。
  • 针对常见应用用例的具有更高级别抽象的重点 API。
  • 可插拔组件让您可以使用自己的日志记录和监控、网络和服务网格。
  • 在 Kubernetes 运行的任何地方运行 Knative,无需担心供应商锁定。
  • 无缝开发者体验,支持 GitOps、DockerOps、ManualOps 等。
  • 支持许多常用工具和框架,例如 Django、Ruby on Rails、Spring 等。

3.Knative的核心组件

3.1 Tekton Pipelines组件(Build组件)

通过灵活的插件化的构建系统将用户源代码构建成容器。
提示:原生的knative-build组件弃用,官方推荐使用Tekton Pipelines作为构建组件。

Tekton Pipelines 项目定义了一组 Kubernetes自定义资源,用作构建块,您可以从中组装 CI/CD 管道。安装后,Tekton Pipelines 可通过 Kubernetes CLI (kubectl) 和 API 调用使用,就像 Pod 和其他资源一样。它提供的一套标准化、可移植、可复用的容器镜像构建方式,通过系统化、工程化的方式,减少了镜像构建时间及成本。

Tekton Pipelines 是云原生的:

  • 在 Kubernetes 上运行
  • 将 Kubernetes 集群作为第一类类型
  • 使用容器作为构建块

Tekton 管道解耦:

  • 一个 Pipeline 可用于部署到任何 k8s 集群
  • 组成流水线的任务可以很容易地单独运行
  • 可以在不同资源运行之间轻松交换,如git、repos。

Tekton 管道类型为:

  • 类型化资源的概念意味着对于诸如 an 之类的资源Image,实现可以很容易地换出(例如,使用 kaniko与 buildkit 构建)
    Knative简介_第1张图片

3.2 Serving

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

Knative 作为 Severless 框架最终是用来提供服务的, 那么 Knative Serving 应运而生。

其特性如下:

  • 快速部署无服务器容器。
  • 自动缩放包括将 pod 缩放到零。
  • 支持多个网络层,例如 Ambassador、Contour、Kourier、Gloo 和 Istio,以便集成到现有环境中。
  • 已部署代码和配置的时间点快照。

Knative Serving 中定义了以下 CRD 资源:

  • Service: 自动管理工作负载整个生命周期。负责创建 Route、Configuration 以及 Revision 资源,以确保您的应用程序为服务的每次更新提供路由、配置和新修订。通过 Service 可以指定将流量路由到最新版本或固定版本。
  • Route:负责映射网络端点到一个或多个 Revision。可以通过多种方式管理流量,包括灰度发布和重命名路由。
  • Configuration: 负责保持 Deployment 的期望状态,提供了代码和配置之间提供了清晰的分离,并遵循十二因素应用程序方法。修改一次 Configuration 产生一个 Revision。
  • Revision:Revision 是对工作负载所做的每次修改的代码和配置的时间点快照。修订是不可变的对象,只要有用就可以保留。Knative Serving Revisions 可以根据传入的流量自动放大和缩小。

Knative简介_第2张图片

友情链接:knative-serving资源详解
友情链接:knative-serving安装

3.3 Eventing

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

Knative Eventing 提供了将事件从事件生成器路由到接收器的工具,使开发人员能够在他们的应用程序中使用事件驱动架构。旨在满足云原生开发中通用需求, 以提供可组合的方式绑定事件源和事件消费者。其设计目标:

  • Knative Eventing 提供的服务是松散耦合,可独立开发和部署。服务可跨平台使用(如 Kubernetes, VMs, SaaS 或者 FaaS)
  • 事件的生产者和事件的消费者是相互独立的。任何事件的生产者(事件源)可以先于事件的消费者监听之前产生事件,同样事件的消费者可以先于事件产生之前监听事件
  • 支持第三方的服务对接该 Eventing 系统
  • 确保跨服务的互操作性

Knative Eventing 使用标准的 HTTP POST 请求在事件生产者和接收器之间发送和接收事件。这些事件符合CloudEvents 规范,支持以任何编程语言创建、解析、发送和接收事件。
Knative简介_第3张图片

如上图所示,Eventing 主要由事件源(Event Source)、事件处理(Flow)以及事件消费者(Event Consumer)三部分构成。

友情链接: knative-eventing资源详解

4. 总结

Knative 使用 Build 提供云原生“从源代码到容器”的镜像构建能力,通过 Serving 部署容器并提供通用的服务模型,同时以 Eventing 提供事件全局订阅、传递和管理能力,实现事件驱动。这就是 Knative 呈现给我们的标准 Serverless 编排框架。

5. 参考

Knative核心概念介绍
Knative官网

你可能感兴趣的:(knative,kubernetes,云原生,docker,cloud,native)