Knative 是运行在 Kubernetes 上的开源无服务器平台,资料标注当前版本为 v1.20.0(2024 年末)。
用途与组件:Serving 提供 HTTP 触发的自动扩缩容运行时,支持缩容到零、流量切分与修订版本;Eventing 面向事件驱动架构,提供 Broker、Trigger、Source、Sink 与 CloudEvents;Functions 通过 func CLI 简化函数部署,支持多语言。
主要能力:KPA(默认)可缩容到零并按并发或 RPS 扩缩,HPA 不缩容到零,按 CPU/内存扩缩;可通过注解配置 min-scale、max-scale、initial-scale、target、scale-down-delay、window 等,容器并发用 containerConcurrency 控制。流量管理支持蓝绿、金丝雀与渐进发布,以及 tagged revision 预览 URL。Eventing 支持 PingSource、ApiServerSource、KafkaSource、GitHubSource、ContainerSource 等事件源,Channel 有 InMemory、Kafka、NATS,并提供 Sequence 链式与 Parallel 扇出流程。
使用方式:需 Kubernetes v1.28+、kubectl 与集群管理员权限。可用 YAML 安装 Serving CRD 与核心组件,选择网络层 Kourier 或 Istio,再装 Eventing、In-Memory Channel 与 MT-Channel-Based Broker;也可用 Knative Operator 部署 KnativeServing 与 KnativeEventing。DNS 可用真实 DNS、sslip.io 或默认域名配置。Functions 可用 brew install knative/client/func 或下载二进制安装,再用 func create/build/deploy/invoke 完成生命周期。
限制与注意:CPU limit 应避免设置,内存 limit 须等于 request;containerConcurrency: 0 会破坏 KPA 扩缩;Service 的 template.metadata.name 一旦设置不可变;InMemoryChannel 在 broker 重启时会丢事件,生产应改用 KafkaChannel 或 NATSChannel;min-scale: "0" 会带来冷启动延迟,健康探针访问公网 URL 可能使 Pod 保持热态。资料未提供价格信息。