Knative架构——概览

1,892 阅读2分钟

下面会用6篇blog的篇幅尽可能的阐述Knative的架构原理,及源码分析。 首先介绍一些Knative中的概念,比如:

  • Configuration(配置)
  • Revision(修订版本)
  • Route(路由)
  • Service(服务)

Configuration(配置)和 Revision(修订版本)

Knative中的Serving组件开始于 Configuration 。我们在 Configuration 中为部署定义所需的状态。最小化 Configuration 至少包括一个配置名称和一个要部署容器镜像的引用。在 Knative 中,定义的引用为 Revision。Revision 代表一个不变的,某一时刻的代码和 Configuration 的快照。每个 Revision 引用一个特定的容器镜像和运行它所需要的任何特定对象(例如环境变量和卷)。然而,您不必显式创建 Revision。由于 Revision 是不变的,它们从不会被改变和删除,相反,当您修改 Configuration 的时候,Knative 会创建一个 Revision。这允许一个 Configuration 既反映工作负载的当前状态,同时也维护一个它自己的历史 Revision 列表。 以下是一个部署完成的Configuration实例: 下面是部署完成的Revision实例:


Route(路由)

Knative 中的 Route 提供了一种将流量路由到正在运行的代码的机制。它将一个命名的,HTTP 可寻址端点映射到一个或者多个 Revision。Configuration 本身并不定义 Route。

下面是一个部署完成的router实例, ,这个路由的意思是100%的流量都发送到configurationName=helloworld-goConfiguration的lastestReadyRevision上


Service(服务)

在 Knative 中,Service 管理工作负载的整个生命周期。包括部署、路由和回滚。(不要将 Knative Service 和 Kubernetes Service 混淆。它们是不同的资源。) Knative Service 控制一系列组成软件的 Route 和 Configuration。Knative Service 可以被看作是一段代码 —— 您正在部署的应用或者函数。

一个 Service 小心确保一个应用有一个 Route、一个 Configuation,以及为每次 Service 更新产生的一个新 Revision。当创建一个 Service 时,您没有特别定义一个 Route,Knative 创建一个发送流量到最新 Revision 的路由。您可以选择一个特定的 Revision 以路由流量到该 Revision。

下面是部署好的service, 在status描述中明确了service追踪的Revision