请求驱动计算
是Serverless的核心特性,Knative Pod Autoscaler(KPA
)实现Pod资源的扩缩。
介绍
Knative 系统中,AutoScaler、Activator和Queue-Proxy三者系统管理应用的规模和匹配流量的规模(通过前面的示例,我们可以看出):
- 缩容至0:当没有请求时,Knative不会分配资源给KServie(缩容为0)
- 接受扩容事件(请求驱动):当来请求时,由 Activator 缓存请求,并通知 AutoScaler
- 按需扩容:AutoScaler 根据 Revision 中各实例的 Queue-Proxy 报告的调整指标数据动态调整 Revision 中实例的规模
- 也借助底层 k8s 的 Horizontal Pod Autoscaler (HPA) 实现
- 可以通过
kubectl -n knative-serving describe cm config-autoscaler
调整相关配置
图片参考
说明:
- 初次请求由 Ingress GW 经 Route 转交给 Activator 进行缓存,同时报告 AutoScaler 进行资源扩缩容
- Pod ok后,Activator 将缓存的请求转发至对应的 Pod 对象
- 若存在 Ok 的 Pod,Ingress GW 经 Route 直接将流量抓发到对应的 Pod,不经过 Activator 缓存
- 若持续无请求,AutoScaler 根据 Queue-Proxy 的报告一直为 0 时,缩容 Pod 数量为 0