Knative Serving 架构¶
Knative Serving 包含几个组件,构成了 Serverless 平台的主干。本页解释了 Knative Serving 的高层架构。请参阅 Knative Serving 概述 和 请求流 以获取更多信息。
图¶

组件¶
| 组件 | 职责 |
|---|---|
| 激活器 | 激活器是**数据平面**的一部分。它负责对传入请求进行排队(如果 Knative Service 已缩减至零)。它与自动伸缩器通信,以重新启动已缩减至零的服务并转发排队的请求。激活器还可以作为请求缓冲区来处理流量突发。更多详情请参见 此处。 |
| 自动扩缩器 | 自动伸缩器负责根据配置、指标和传入请求来伸缩 Knative 服务。 |
| 控制器 | 控制器负责管理集群内 Knative 资源的状况。它会监视多个对象,管理依赖资源的生命周期,并更新资源状态。 |
| 队列代理 | Queue-Proxy 是 Knative Service Pod 中的一个 sidecar 容器。它负责收集指标并在将请求转发到用户容器时强制执行所需的并发。在必要时,它也可以像激活器一样充当队列。 |
| Webhooks | Knative Serving 拥有多个 webhook,负责验证和修改 Knative 资源。 |
网络层和入口¶
注意
这里的 Ingress (入口) 指的不是 Kubernetes Ingress 资源。它指的是将集群中的资源暴露给外部访问的概念。
Knative Serving 依赖于一个满足 Knative 网络规范的**网络层**。为此,Knative Serving 定义了一个内部 KIngress 资源,它充当了多种可插拔网络层的抽象。目前,社区提供了三种可用且受支持的网络层:
流量流和 DNS¶
注意
不同网络层之间存在细微差别,以下章节描述了通用概念。此外,还有多种方法可以公开您的 Ingress Gateway (入口网关) 并配置 DNS。更多信息请参阅安装文档。

- 每个网络层都有一个控制器,负责监视
KIngress资源并相应地配置Ingress Gateway。它还将通过此资源报告status(状态) 信息。 Ingress Gateway用于根据模式(代理/服务,请参阅 此处了解更多详细信息)将请求路由到activator(激活器) 或直接路由到 Knative Service Pod。Ingress Gateway处理来自集群内部和集群外部的请求。- 为了使
Ingress Gateway在集群外部可访问,它必须使用type: LoadBalancer或type: NodePort的 Kubernetes Service 来**公开**。社区支持的网络层将此作为安装的一部分。然后配置 **DNS** 指向Ingress Gateway的IP或Name。
注意
请注意,如果您使用/设置 DNS,还应该为 Knative 设置相同的域名。
自动扩缩¶
您可以在此处找到有关我们的自动伸缩机制的更详细信息:here。