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

问题描述

我阅读了有关 Knative 私人和公共服务的信息。私有服务始终指向实际部署的端点,而公共服务可以指向 - 私有服务指向的位置,也可以指向激活器。

但就我而言,公共服务始终指向激活器(无论我们处于服务模式还是代理模式)。但一切正常。请检查下图,10.24.3.16:8012 是激活器端点:

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

enter image description here

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

enter image description here

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

解决方法

您注意到去年增加了一项优化——在少量流量(基本上,少于 10-15 个 pod)的情况下,就典型的入口而言,激活器通常可以执行更好的请求加权列表平衡为现有 Pod 排队和管理 concurrencyCount 并将延迟请求路由到新 Pod 或可用的现有 Pod。

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

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