使用 Istio Gateway 安装
本指南提供了在 Kubernetes 上使用 Istio Gateway 部署 vLLM Semantic Router (vsr) 的分步说明。Istio Gateway 底层使用 Envoy,因此可以与 vsr 配合使用。但是,不同的基于 Envoy 的 Gateway 处理 ExtProc 协议的方式有所不同,因此这里描述的部署与其他基于 Envoy 的 Gateway 部署有所不同。将 Istio Gateway 与 vsr 结合有多种架构选项。本文档描述其中一种选项。
架构概览
部署包含以下组件:
- vLLM Semantic Router:为基于 Envoy 的 Gateway 提供智能请求路由和处理决策
- Istio Gateway:Istio 的 Kubernetes Gateway API 实现,底层使用 Envoy 代理
- Gateway API Inference Extension:通过 ExtProc 服务器扩展 Gateway API 用于推理的附加 API
- 两个 vLLM 实例各服务一个模型:此拓扑中用于演示 Semantic Router 的示例后端 LLM
前置条件
开始之前,请确保已安装以下工具:
- Docker - 容器运行时
- minikube - 本地 Kubernetes
- kind - Kubernetes in Docker
- kubectl - Kubernetes CLI
- Helm - Kubernetes 包管理器
minikube 或 kind 都可以用于部署本练习所需的本地 kubernetes 集群,因此您只需要其中一个。我们在下面的描述中使用 minikube,但相同的步骤在创建集群后也适用于 Kind 集群。
我们还将在本练习中部署两个不同的 LLM 以更清楚地说明 Semantic Router 和 model routing 功能,因此理想情况下您应该在支持 GPU 的机器上运行本练习,以运行两个模型并具有足够的内存和 存储空间。您也可以在较小的服务器上使用等效步骤,在基于 CPU 的服务器上运行较小的 LLM,无需 GPU。
步骤 1:创建 Minikube 集群
通过 minikube(或等效地通过 Kind)创建本地 Kubernetes 集群。
# 创建集群
$ minikube start \
--driver docker \
--container-runtime docker \
--gpus all \
--memory no-limit \
--cpus no-limit
# 验证集群就绪
$ kubectl wait --for=condition=Ready nodes --all --timeout=300s