Knative Serving 架构¶
Knative Serving 由几个组件组成,这些组件构成了无服务器平台的支柱。本页介绍 Knative Serving 的高级架构。有关更多信息,请参阅 Knative Serving 概述 和 请求流。
图表¶
组件¶
组件 | 职责 |
---|---|
激活器 | 激活器是 **数据平面** 的一部分。它负责对传入请求进行排队(如果 Knative Service 已缩放到零)。它与自动伸缩器通信,以恢复缩放到零的服务并转发排队的请求。激活器还可以充当请求缓冲区,以处理流量突发。更多详细信息可以在这里找到 here。 |
自动伸缩器 | 自动伸缩器负责根据配置、指标和传入请求来伸缩 Knative 服务。 |
控制器 | 控制器管理集群中 Knative 资源的状态。它监视多个对象,管理依赖资源的生命周期,并更新资源状态。 |
队列代理 | 队列代理是 Knative 服务 Pod 中的侧车容器。它负责收集指标并在将请求转发到用户的容器时执行所需的并发性。如果需要,它也可以充当队列,类似于激活器。 |
Webhook | Knative Serving 有几个 Webhook 负责验证和修改 Knative 资源。 |
网络层和入口¶
注意
在本例中,入口
不指 Kubernetes 入口资源。它指的是对集群中资源公开外部访问的概念。
Knative Serving 依赖于一个满足 Knative 网络规范 的 网络层
。为此,Knative Serving 定义了一个内部 KIngress
资源,它充当多个可插拔网络层的抽象。目前,社区支持三种网络层
流量流和 DNS¶
注意
不同的网络层之间存在细微差异,以下部分描述了通用概念。此外,有多种方法可以公开您的 入口网关
并配置 DNS。有关更多信息,请参阅安装文档。
- 每个网络层都具有一个控制器,该控制器负责监视
KIngress
资源并相应地配置入口网关
。它还会通过此资源报告状态
信息。 入口网关
用于将请求路由到激活器
或直接路由到 Knative 服务 Pod,具体取决于模式(代理/服务,有关更多详细信息,请参阅 here)。入口网关
处理来自集群内部和集群外部的请求。- 为了使
入口网关
在集群外部可访问,必须使用类型为type: LoadBalancer
或type: NodePort
的 Kubernetes 服务将其 公开。社区支持的网络层将此作为安装的一部分包含在内。然后,将 DNS 配置为指向入口网关
的IP
或名称
注意
请注意,如果您确实使用/设置了 DNS,则还应为 Knative 设置 相同域。
自动伸缩¶
您可以在我们的自动伸缩机制中找到更多详细信息 here。