安装 Knative¶
本页为 Kubernetes 管理员提供有关如何在现有 Kubernetes 集群上安装 Knative 的指南。Knative 有三个组件:Eventing、Serving 和 Functions。Serving 和 Eventing 安装到集群中。Functions 不安装到集群中,因为客户端 func CLI 工具会将无状态函数构建并部署为标准容器。
Knative 安装假定您熟悉以下内容
- Kubernetes 和 Kubernetes 管理。
kubectlCLI 工具。您可以使用现有的 Kubernetes 管理工具(策略、配额等)来管理 Knative 工作负载。- 使用
cluster-admin权限或等效权限来安装软件并在命名空间内的所有集群中管理资源。有关权限的信息,请参阅 使用 RBAC 授权。 - 建议熟悉云原生计算基金会 (CNCF) 项目,例如 Prometheus、Istio 和 Strimzi,其中许多都可以与 Knative 一起使用。
您可以独立安装 Serving 和 Eventing 组件。您也可以随时添加和删除插件,以及跨越可观测性、安全性和测试的可选集成工具。插件在 可扩展性 部分进行描述。
安装路线图¶
使用下表确定您的安装方法。如果您此时只想了解 Knative 的功能,请安装快速入门。
| 快速入门 | 基于 YAML | Knative Operator | |
|---|---|---|---|
| 目的 | 本地 | 生产 | 生产 |
| Kubernetes 部署 | 本地,使用 kind 或 Minikube |
现有 | 现有 |
| 硬件 | 3 CPU,3 GB RAM | 单节点 6 CPU,6 GB 内存,30 GB 磁盘存储。 多节点 每个节点 2 CPU,4 GB 内存,20 GB 磁盘存储。 |
与基于 YAML 相同 |
支持的平台是 Linux、MacOS 和 Windows。
Knative Operator 是一个自定义控制器,它扩展了 Kubernetes API 来安装 Knative 组件。有关基于 YAML 和使用 Knative Operator 安装的更多信息,请参阅 YAML 和 Knative Operator 安装对比。
根据您的安装方法,使用以下步骤安装 Knative
快速入门:
- 安装 CLI 工具。
- 安装 Knative 快速入门插件。
基于 YAML:
使用所有 YAML 文件进行安装。如果您正在使用 GitOps 工具(例如 Flux 或 ArgoCD)来应用 Git 存储库中已提交的清单,则此选项最有用。这是最低通用分母方法,让您可以精细地控制过程和资源定义。
- 安装 CLI 工具。
- 安装一个或两个组件
- 安装 Knative Serving。
- 安装 Knative Eventing。
Knative Operator:
使用 Knative Operator 通过清单或 Helm 进行安装,或者使用随 Knative Operator CLI 插件一起安装的 Knative Operator 进行安装。
- 安装 CLI 工具,包括 Knative Operator CLI 插件。
- 通过以下任一方式安装 Serving 和 Eventing 组件
- 使用 Kubernetes 清单或 Helm 的 Knative Operator。
- Knative Operator CLI。
所有安装都需要支持的 Kubernetes 版本。提供的系统要求仅为建议。您安装的要求可能因您使用的插件组件而异。
有关商业 Knative 产品列表,请参阅 Knative 产品。
YAML 和 Knative Operator 安装对比¶
您可以使用 YAML 文件和其他资源来安装 Knative,无论是否由 Knative Operator 辅助。Knative Operator 可让您自动应用、修补和自定义内容。
Knative Operator 简化了安装的复杂性,并且与 GitOps 方法兼容。它还使核心 Knative 应用程序定义与 ConfigMap 和您所做的其他更改分开。您可以使用 Knative CLI Operator 插件,或使用 Kubernetes 清单或 Helm 来安装 Knative Operator。
以下是使用 YAML 或 Knative Operator 安装的注意事项
| 基于 YAML 的安装 | Knative Operator 安装 |
|---|---|
| 您可以确切地看到您得到什么。 | 您在更高的级别指定选择。 |
| 您可以通过直接编辑参数来调整任何参数。 | 并非所有设置都公开。 |
| 如果您进行更改,在升级时需要跟踪您所做的更改。 | 很容易将您的自定义项与基本安装分开。 |
| 版本和审计控制,因为 YAML 文件存储在 GitHub 存储库中。 | 使用命令行工具或清单管理自定义资源。 |
可扩展性¶
Knative 利用您集群上已安装的现有基础设施,并在类似组件之间提供面向开发者的接口。Serving 和 Eventing 组件支持同一集群内的多种底层传输插件。Serving 支持具有可插入网络入口路由的 Pod;Eventing 支持具有可插入消息传输(如 Kafka 和 RabbitMQ)的 Pod。
对于 LLM 部署,请考虑 KServe 平台。KServe 是一个基于 Knative Serving 构建的 Kubernetes 原生模型服务平台,专为生产 LLM 部署而设计。
Knative 支持在初始安装后安装其他插件,因此您最初的选择不会限制您。例如,您可以在不丢失消息的情况下从一种消息传输或网络入口迁移到另一种。
网络插件¶
如果您没有满足要求的入口,Knative 提供了 net-kourier,这是一种默认的轻量级 HTTP 路由实现。插件包括
-
Istio
来自 Istio 的服务网格。请参阅 安装 Istio for Knative。
-
Contour
通用入口,旨在实现多团队委派。请参阅 Contour。
-
Gateway API
Kubernetes Gateway API(测试版)。
-
Higress(第三方集成)
Higress 为 Knative 服务提供增强的流量治理、身份验证、WAF 防护和可观测性,并支持 WASM 插件可扩展性。请参阅 Higress:Knative 入口网关的最佳实践。
注意
此集成不受 Knative 社区管理。
消息传递插件¶
如果您还没有解决方案,Knative 提供了默认的轻量级内存消息传递实现。
-
Kafka
来自 Apache Kafka 的分布式事件流平台。有序、高吞吐量,但复杂性适中。请参阅 安装 Kafka for Knative。
-
RabbitMQ
来自 RabbitMQ 的消息和流媒体代理。有序、中等吞吐量和复杂性。请参阅 安装 RabbitMQ for Knative
-
NATS
来自 NATS 的事件流平台。低复杂度。
集成插件¶
这些插件有助于 Knative 的运行。
-
cert-manager
用于在安全的 HTTPS 连接中请求 TLS 证书。请参阅 安装 cert-manager。
-
Backstage
用于处理 Knative 后端的插件。请参阅 安装 backstage 插件。
安装资源¶
使用以下链接维护您的安装。