回答问题

如这里所述,Knative 的激活器接收并缓冲对非活动修订的请求。

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

Knative 服务版本:0.9.0

Answers

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

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

  • 针对您的应用程序 pod 的私有服务。需要发现 Pod IP。

  • 公共服务 被入口网关定位,并且根据它所处的模式(稍后会详细介绍),它将指向与第一个服务相同的端点或指向激活器服务。

Serverless 服务模式

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

  • 发球

  • 代理

服务模式

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

Knative serverless 控制器的服务模式

  • hello-go-pb - 是公共服务。

  • hello-go-pr - 是私人服务。

代理模式

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

Knative serverless 控制器的代理模式

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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐