前言
随着大模型、传统机器学习和深度学习推理业务的大规模落地,企业在实际生产中普遍面临以下运维挑战:
- 多框架模型(TensorFlow、PyTorch、ONNX、XGBoost、TensorRT、LLM 等)部署方式各异,缺乏统一运维手段;
- 推理流量波动剧烈,在线服务与离线批处理并存,静态资源分配导致大量浪费;
- 模型版本管理缺失,灰度发布、A/B 测试、流量切分等高级发布策略难以实现;
- 推理接口协议不统一,REST/gRPC 接口格式各异,上层业务集成成本高;
- 可观测性不足,监控、日志、链路追踪等能力需自行开发,无法开箱即用。
原生 Kubernetes 仅提供基础的容器编排能力,无法满足上述 AI 推理场景的专属需求。
KServe 应运而生,它是一个由 CNCF 托管的云原生模型推理平台,基于 Kubernetes 构建,提供标准化、高性能、轻量化的推理服务解决方案。本文将从概念、架构、安装到实际案例,全方位介绍 KServe,覆盖 Standard(标准) 与 Knative Serverless(无服务器) 两种主流部署模式,助您快速落地 AI 推理服务。
一、概述
1、什么是 KServe
KServe(前身 KFServing)是面向机器学习 / 深度学习推理场景的开源云原生框架,运行在 Kubernetes 之上,目标是提供统一、标准化的模型推理服务平台。
它屏蔽不同 AI 框架、推理引擎的部署差异,通过自定义资源 InferenceService 统一管理模型服务生命周期,内置弹性伸缩、流量路由、灰度发布、模型监控、日志追踪、安全鉴权等企业级能力,兼容传统机器学习、CV 视觉模型、大语言模型 LLM 各类推理业务。
2、KServe 诞生背景与解决的核心问题
- 部署繁琐:TensorFlow、PyTorch、ONNX、XGBoost、TensorRT、LLM 各自推理服务镜像、接口不统一,运维成本极高;
- 算力资源浪费:推理流量波峰波谷差异显著,原生 Deployment 无法缩容至零,空闲时仍占用资源;
- 缺少模型版本管控能力:不支持灰度发布、A/B 测试、流量权重切分,模型上线风险高;
- 接口协议混乱:不同模型服务 Rest/gRPC 接口格式不统一,业务对接成本高;
- 推理可观测能力缺失:模型输入输出监控、推理延迟、错误率、样本日志采集需要自行开发。
KServe 核心解决能力
- 统一 CRD:使用
InferenceService一套 YAML 即可部署任意框架模型; - Serverless 伸缩:基于 Knative 支持缩容至零副本,大幅节省成本;
- 精细流量管理:集成 Istio 原生能力,支持灰度、蓝绿、A/B 测试、流量镜像;
- 标准化推理协议:遵循 v2 推理协议(REST/gRPC),统一预测和元数据接口;
- 内置可观测性:自动采集 QPS、延迟、错误率等指标,集成日志和分布式追踪;
- 异构硬件调度:支持 GPU 调度,模型存储支持 S3/OSS/MinIO/PVC 及本地挂载,同时支持离线批量推理。
3、什么是 InferenceService
InferenceService 是 KServe 的核心自定义资源(CRD),是用户定义模型推理服务的唯一入口,替代原生 Kubernetes的 Deployment/Service/Ingress。
只需要一份 InferenceService YAML,KServe Controller 会自动创建底层所有资源:
- 推理后端容器(Predictor)
- 数据预处理/后处理容器(Transformer)
- 模型可解释性容器(Explainer)
- 流量路由规则、VirtualService、弹性伸缩策略(HPA 或 Knative Autoscaler)
三大核心组件
| 组件 | 职责 |
|---|---|
| Predictor(预测器) | 加载模型,处理核心推理请求,支持多种运行时(Triton、TorchServe、TensorFlow Serving、vLLM、MLServer 等) |
| Transformer(转换器) | 执行请求前数据预处理和响应后处理,解耦业务逻辑与推理引擎 |
| Explainer(解释器) | 提供模型可解释性分析(如特征贡献度),适用于风控、医疗等需解释性的场景 |
4、核心组件
| 组件 | 说明 |
|---|---|
| KServe Controller | 核心控制器,监听 InferenceService CRD,协调创建/更新/删除底层工作负载 |
| Model Storage Initializer | 初始化 Sidecar 容器,自动从 对象存储(S3)、PVC、宿主机目录拉取模型文件至 Pod; |
| Predictor Runtimes | 官方预置的多框架推理镜像(Triton、TorchServe、TensorFlow Serving、vLLM、MLServer 等) |
| KServe Agent | Sidecar 容器,负责指标采集、日志转发、健康检查、推理协议适配 |
| Ingress Gateway | 基于 Istio 或 KServe Gateway,统一推理流量入口,实现路由、限流、灰度、鉴权 |
| Autoscaler | 两种伸缩模式: • Standard 模式:基于 K8s HPA(CPU/QPS 指标),不支持缩容至零 • Knative 模式:基于 Knative Autoscaler,支持零副本缩容 |
二、整体架构
1、KServe 全局架构
KServe 整体架构分为四层,完全基于 Kubernetes 生态扩展:
| 层级 | 组件说明 |
|---|---|
| 控制平面层 | KServe Controller、CRD(InferenceService、ClusterServingRuntime),依赖 Kubernetes API Server、etcd、调度器及 GPU 调度插件 |
| 流量管理层 | Istio Gateway / Knative Ingress 提供外部流量入口; VirtualService 实现流量切分、灰度、路由规则 |
| 推理运行时层(Pod 内部) | Model Storage Initializer + KServe Agent Sidecar + Predictor/Transformer/Explainer 主容器 |
| 存储与可观测层 | • 存储:MinIO/S3/云对象存储/PVC 等 • 监控:Prometheus + Grafana 采集推理 QPS、延迟、错误率 • 日志:Loki/ELK 采集推理输入输出日志 • 链路追踪:Jaeger/Zipkin 追踪推理请求全链路 |
三、安装KServe
1、前置环境准备
- 可用 Kubernetes 集群 1.24+;
- 已安装 Helm 3;
- 若使用 GPU 推理:部署 nvidia-device-plugin;
2、拉取源码
1 | # 克隆 kserve 官方代码仓库 |
3、一键安装脚本(推荐)
KServe 源码提供了自动化安装脚本 hack/kserve-install.sh,可一键安装所有依赖(cert-manager、Istio、Knative 等)及 KServe 自身,比手动 Helm 操作简便许多。
脚本核心参数说明
| 参数 | 含义 | 选项 |
|---|---|---|
--kserve-version |
KServe 版本 | v0.18.0 等 |
--type |
安装哪些组件 | kserve(核心)/ localmodel(本地模型节点)/ llmisvc(LLM 推理服务) |
--standard |
Standard 模式 | 无 Istio/Knative 依赖,最简单 |
--knative |
Knative 模式 | 自动装 Istio + Knative,支持缩容到零 |
--deps-only |
只装依赖 | 只装 Istio、Knative、cert-manager,不装 KServe 本身 |
场景化安装命令(按需选择)
- 新手快速体验(传统机器学习模型):Standard 模式,KServe 核心 + 本地模型挂载
1 | cd kserve/ |
- LLM 大模型部署(vLLM 推理):Standard 模式,集成 LLM 专用运行时
1 | ./hack/kserve-install.sh \ |
- 已有 Istio/Knative,仅补充依赖
1 | ./hack/kserve-install.sh \ |
- 全新完整 Serverless 平台(支持 0 缩容)
1 | ./hack/kserve-install.sh \ |
安装耗时参考:Standard 模式 3
5 分钟;Knative 模式含 Istio+Knative 部署,耗时 812 分钟。(视网络环境而定)
4、手动分步安装(理解每一步在做什么)
上一节的脚本帮你一键搞定,适合快速上手。这一节把每个组件拆开装,适合离线环境、内网部署、或者你想搞清楚 KServe 到底装了哪些东西。
整个安装分为四步,按顺序执行:
1 | 步骤一:装 CRD(告诉 K8s 有 InferenceService 这种东西) |
步骤一:安装 CRD(自定义资源定义)
CRD 是基础,必须先装。根据你的需求选装:
1 | # 必装:核心CRD |
选装建议:新手先把第一条核心 CRD 装了就行,后面两条用到再装。
步骤二:安装推理运行时配置
这一步告诉 KServe”我支持哪些推理框架”。servingruntime 控制传统模型运行时(SKLearn/PyTorch/TensorFlow),llmisvcConfigs 控制大模型运行时(vLLM 等)。
1 | helm install kserve-runtime-configs oci://ghcr.io/kserve/charts/kserve-runtime-configs \ |
步骤三:安装 KServe 控制器(二选一)
这是核心组件,负责监听 InferenceService 并创建对应的 Deployment/Service 等资源。
1 | # 模式 A:Standard 标准模式(推荐生产使用) |
步骤四:安装扩展资源(可选)
如果你在步骤一装了对应的 CRD,这里装对应的控制器:
1 | # 本地模型节点控制器(配合步骤一的 localmodel CRD) |
快速对照:最低安装 vs 完整安装
| 场景 | 需要执行的步骤 |
|---|---|
| 最小化体验(只跑 SKLearn/PyTorch) | 步骤一(核心CRD)→ 步骤二 → 步骤三 |
| 生产标准部署(传统模型 + 本地存储) | 步骤一(核心 + localmodel CRD)→ 步骤二 → 步骤三 → 步骤四(localmodel) |
| LLM 大模型部署(vLLM 等) | 步骤一(核心 + llmisvc CRD)→ 步骤二 → 步骤三 → 步骤四(llmisvc) |
| 全家桶(什么都装) | 步骤一(全部 CRD)→ 步骤二 → 步骤三 → 步骤四(全部) |
5、安装验证
无论你用脚本还是手动安装,装完都跑一遍下面的检查,确认一切就绪。
5.1 必检项(三条全部通过即为成功)
1 | # ① Controller 是否在运行 |
5.2 可选检查项
1 | # 检查 LLM CRD(若已安装) |
四、使用
本节演示如何使用 KServe 部署一个 Hugging Face 上的小型大语言模型,并通过 hostPath 直接挂载本地模型文件。
完整流程:HuggingFace 模型下载 → K8s 资源 YAML 编写 → 部署验证 → 接口调用测试
1、下载Hugging Face模型到本地
①、安装python环境
1 | # 安装python3主程序 + 工具 |
②、安装huggingface-cli
1 | # 建个虚拟环境 |

配置国内镜像加速
1 | # 临时生效(当前终端) |
2、配置yaml
1 | # ========================================================== |
3、部署
1 | # 部署 |

启动成功,监听8080端口

4、测试
1 | # 测试-请求模型列表 |

五、最后
大部分内容是基于我的笔记记录,更多内容可参考官网: