3

如此处所述,Knative 的 Activator 接收并缓冲对非活动修订的请求。

这个路由是如何实现的?我在应用程序的命名空间中看到的只是一个 VirtualService 路由请求到修订版,所以我看不到进入网格的流量是如何重定向到 Activator 的。

Knative 服务版本:0.9.0

4

1 回答 1

11

Knative 有一个新概念(CRD),称为无服务器服务,它是为每个 Knative 服务创建的。

无服务器服务创建两个 Kubernetes 服务:

  • 以您的应用程序 pod 为目标的私有服务。需要发现 Pod IP。
  • 公共服务 是入口网关的目标,根据它所处的模式(稍后将详细介绍),它将指向与第一个服务相同的端点或激活器服务的端点。

无服务器服务模式

无服务器服务可以处于以下模式之一:

  • 服务
  • 代理人

服务模式

只要您的应用程序有 pod 实例在运行,无服务器服务就处于服务模式。因此,您的公共服务配置有来自您的私有服务的端点,这意味着入口网关转发的请求会到达您的应用程序,如下图所示:

Knative serverless 控制器的服务模式

  • hello-go-pb - 是公共服务。
  • hello-go-pr - 是私人服务。

代理模式

当您的应用程序实例被自动缩放器缩减时,无服务器服务控制器会更新公共服务,以使用 Activator Service 发现的 IP 进行配置。触发自动缩放会缓冲请求,直到一项服务启动并运行并转发请求。代理模式如下图所示:

Knative 无服务器控制器的代理模式

总而言之,无服务器控制器通过在私有服务的端点之间交替设置公共服务的端点,或者将其缩小到零到激活器服务的端点。

于 2019-11-14T18:32:20.323 回答