当 pods 缩放为零时,Knative 如何将流量切换到激活器

How Knative swiches traffic to activator when pods scale to zero

我了解了 Knative 私有和 public 服务。私有服务始终指向实际部署的端点,而 public 服务可以指向 - 私有服务指向的位置,也可以指向激活器。

但在我的例子中 public 服务总是指向激活器(无论我们处于服务模式还是代理模式)。但一切正常。请检查下图,10.24.3.16:8012 是激活器端点:

在缩小模式下(pod 计数为零),请检查 helloworld-go-00001

当 pod 计数大于 0 时处于放大模式(服务模式)。

请让我明白我错过了什么。

您注意到去年添加的一项优化 -- 在流量较小的情况下(基本上小于 10-15 pods),激活器通常可以执行更好的请求加权列表平衡在为现有 pods 排队和管理 concurrencyCount 以及将延迟请求路由到可用的新 pods 或现有 pods 方面比典型的入口要好。

如果您的服务扩展到 20 或 30 pods,您应该会看到激活器停止在流量路径中;我相信切入点是 trafficBurstCapacity / ( (1.0-targetCapacity) * concurrencyCount) pods,但我可能弄错了。如果我没记错的话,结果类似于 200 / (0.3 * 80) > 8,但我已经有一段时间没看了。

在 apiserver 中实现的方式是 Knative autoscaler 直接管理 helloworld-go-00001 服务的端点,使用来自激活器和队列代理的指标了解详细信息。