Knative Serving 的 Activator 如何拦截缩小修订的请求?
How does Knative Serving's Activator intercept requests to scaled down revisions?
如here所述,Knative 的 Activator 接收并缓冲对非活动修订的请求。
这个路由是如何实现的?我在我的应用程序的命名空间中看到的只是一个 VirtualService 路由请求到修订版,所以我看不到进入网格的流量是如何重定向到 Activator 的。
Knative 服务版本:0.9.0
Knative 有一个新概念 (CRD),称为无服务器服务,它是为每个 Knative 服务创建的。
无服务器服务创建两个 Kubernetes 服务:
- 针对您的应用程序 私人服务 pods。需要它来发现 Pod IP。
- Public 服务 正被入口网关 定位,并根据它所处的模式(更多关于稍后)它将指向与第一个服务相同的端点或激活器服务的端点。
无服务器服务模式
无服务器服务可以采用以下模式之一:
- 发球
- 代理
服务模式
只要您的应用程序有 pod 实例,无服务器服务就处于服务模式 运行。因此,您的 Public 服务配置了您的私有服务的端点,这意味着入口网关转发的请求到达您的应用程序,如下图所示:
- hello-go-pb - 是 public 服务。
- hello-go-pr - 是私人服务。
代理模式
当您的应用程序实例被自动缩放器缩减时,无服务器服务控制器更新 public 服务以使用 Activator 服务发现的 IP 配置。触发自动缩放会缓冲请求,直到一项服务启动并 运行 并转发请求。代理模式如下图所示:
总而言之,无服务器控制器设置 public 服务的端点
通过在 Private Service 的端点之间交替,或者如果它缩小到零到 Activator Service 的端点。
如here所述,Knative 的 Activator 接收并缓冲对非活动修订的请求。
这个路由是如何实现的?我在我的应用程序的命名空间中看到的只是一个 VirtualService 路由请求到修订版,所以我看不到进入网格的流量是如何重定向到 Activator 的。
Knative 服务版本:0.9.0
Knative 有一个新概念 (CRD),称为无服务器服务,它是为每个 Knative 服务创建的。
无服务器服务创建两个 Kubernetes 服务:
- 针对您的应用程序 私人服务 pods。需要它来发现 Pod IP。
- Public 服务 正被入口网关 定位,并根据它所处的模式(更多关于稍后)它将指向与第一个服务相同的端点或激活器服务的端点。
无服务器服务模式
无服务器服务可以采用以下模式之一:
- 发球
- 代理
服务模式
只要您的应用程序有 pod 实例,无服务器服务就处于服务模式 运行。因此,您的 Public 服务配置了您的私有服务的端点,这意味着入口网关转发的请求到达您的应用程序,如下图所示:
- hello-go-pb - 是 public 服务。
- hello-go-pr - 是私人服务。
代理模式
当您的应用程序实例被自动缩放器缩减时,无服务器服务控制器更新 public 服务以使用 Activator 服务发现的 IP 配置。触发自动缩放会缓冲请求,直到一项服务启动并 运行 并转发请求。代理模式如下图所示:
总而言之,无服务器控制器设置 public 服务的端点 通过在 Private Service 的端点之间交替,或者如果它缩小到零到 Activator Service 的端点。