Kthena 是一个专为 Kubernetes 设计的云原生、高性能 LLM 推理路由和编排调度系统。它旨在解决在生产环境中大规模编排、部署和提供大语言模型服务时所面临的核心挑战。通过其独特的超节点拓扑感知亲和性调度、KV Cache 感知的流量调度、Prefill/Decode 分离路由等高级功能,Kthena 能够显著提升 GPU 或 NPU 的资源利用率与吞吐量,同时降低推理延迟,赋予企业前所未有的灵活性与控制力。作为 Volcano 的子项目,Kthena 致力于将能力边界从 AI 训练拓展至推理,打造一个训推一体的完整解决方案。
Kthena v0.4.0 版本的发布,进一步简化了大语言模型工作负载的管理,为 AI 基础设施注入了新的活力。该版本凝聚了社区贡献者过去两个月的倾力付出与通力协作,运行更稳定,功能也愈发丰富。
Kthena v0.4.0 关键特性
更快、更智能的路由器
确定且高效的模型选择
此前,由于 Kubernetes 内置的 CRD 校验无法强制实现跨对象的全局唯一性,若将多个 ModelRoute 资源映射到同一个模型,可能会引发路由冲突,导致规则匹配出现歧义,使得目标选择不一致。Kthena v0.4.0 优雅地解决了这个痛点。
该版本引入了一套可靠的冲突解决机制。当存在重复的 ModelRoute 时,路由器会确定性地优先选择创建时间最早(通常是预构建的)的路由,并将较新的重复项视为低优先级。这一策略确保了每一次路由请求都能得到可预测且稳定的结果。
可配置的 Prefix-Cache
统一的标准往往难以满足所有场景的需求。为此,Kthena 将硬编码的 Prefix-Cache 参数替换为完全可配置的 Prefix-Cache 系统。现在,你可以通过以下参数对 Prefix-Cache 的行为进行细粒度控制:
- Block Size(哈希处理块大小):控制前缀匹配的粒度。较小的块能提供更精确的匹配,但会增加 CPU 开销;较大的块处理速度更快,但精准度会下降。
- Max Block Limits(最大块限制):设定对给定提示词进行哈希处理的上限。这能避免路由器在处理过长的传入提示词时,出现延迟激增的问题。
- Cache Capacity(缓存容量):定义路由器可以记住的前缀条目数量。增加此值可以提高多样化工作负载的缓存命中率,代价是略微增加内存占用。
- Top-K Results(结果数):决定在匹配成功时,将多少个候选实例纳入考量。调整此参数有助于实现更好的负载均衡,确保流量平稳地分布在多个节点上,防止单个活跃实例过载。
通过微调这些设置,你可以为各类模型和特定的业务 LLM 工作负载,量身定制 Kthena Router 的 Prefix-Cache。
细粒度、资源高效的滚动更新
过去,Kthena 能在整个 ServingGroup 级别执行滚动更新。然而,对于大规模的大语言模型应用而言,完全重建一个 ServingGroup 通常是极其消耗资源且耗时的过程。
为解决此问题,我们引入了基于 Role 的滚动更新机制。当只有特定的 Role 需要变更时,你无需再更新整个 ServingGroup(这也是我们在恢复策略中引入 RoleRecreate 的原因)。从 v0.4.0 开始,你可以动态调整 rolloutStrategy——这将大幅降低升级时的资源消耗,并显著缩短升级过程中 ServingGroup 的不可用时间。
支持 SGLang 和 vLLM 的 PD 分离部署
PD 分离部署架构已成为大规模 LLM 服务的标准。在 Kthena v0.4.0 中,Kthena 的 modelServing 和 Router 已通过全面验证,能够良好地支持 vLLM 和 SGLang 的 PD 分离部署。用户可以根据需求,通过 ModelServing 配置 Prefill 和 Decode,并结合 ModelServer 中的 pdGroup 配置,实现 PD 感知的智能路由,从而轻松构建高效的 PD 分离推理服务。
提升可观测性
Role 状态可见性
为了最大限度地降低 kube-apiserver 的负载,Kthena 的 ModelServing 使用了本地存储缓存 ServingGroup 和 Role 的状态。虽然这种方式效率很高,但也限制了可观测性,使整个调和过程中 ServingGroup 和 Role 的状态变化变成了难以洞察的“黑盒”。
在 v0.4.0 中,我们打破了这种状态。现在,我们能够直接通过 Kubernetes Events 暴露 Role 的状态,显著提升了 ModelServing 的可观测性。未来,我们还计划根据用户需求,将关键的 Role 信息直接嵌入到 ModelServing 的 Status 字段中,为你提供全面且透明的部署状态掌控力。同时,我们还为开发者提供了 debug-port,可以直接拉取本地缓存中的 ServingGroup 和 Role 状态。
全面的访问日志
现在,Router 会生成更详细的访问日志,为每一个请求捕获更丰富多样的路由元数据。以下是 Kthena v0.4.0 Router 日志的一个示例:
[2026-04-16T07:33:08.435627146Z] "POST /v1/chat/completions HTTP/1.1" 200 model_name=deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B model_router=deepseek-r1-1-1.5b model_server=deepseek-r1 selected_pod=deepseek-r1-1-1.5b-6989c66877-p6jvv request_id=ad683d1b-6011-4b0f-b9b5-cbb18d43c57b gateway=dev/default http_route=kthena-e2e-gie-8eoas/llm-route inference_pool=kthena-e2e-gie-8eoas/deepseek-r1-1-1.5b tokens=10/38 timings=3ms(0+2+0)
与之前的版本相比,我们新增了 gateway、http_route 和 inference_pool 字段,从而为 Gateway 及 Gateway Inference Extension 的流量提供了更丰富的信息。
开放的生态系统
Kthena 致力于携手广大的开源社区,将项目建设成为一个开放、包容且繁荣的生态。
支持 ModelScope
在 v0.4.0 中,Kthena 的模型下载器扩展了对 ModelScope 协议的支持。这让用户和运维人员可以更灵活地选择符合项目需求的模型仓库。
Kthena 拒绝绑定单一技术栈,坚持与多样化的 AI 技术无缝集成,深耕于充满活力的 云原生 AI 生态之中。社区热忱地邀请全球开发者加入,共同构建包容且充满机遇的未来数字基础设施。

Kthena v0.4.0 贡献者
| @YaoZengzeng |
@VanderChen |
@hzxuzhonghu |
| @Tweakzx |
@pierluigilenoci |
@lihua871205 |
| @nalan2012 |
@Murphylu1993 |
@xrwang8 |
| @thisisharsh7 |
@vyagh |
@FAUST-BENCHOU |
| @LiZhenCheng9527 |
@aabhinavvvvvvv |
@anirudh240 |
| @blenbot |
@sicaario |
@katara-Jayprakash |
| @WHOIM1205 |
@agrawalcodes |
|
相关链接
[1] Volcano: https://volcano.sh/
[2] Kthena : https://kthena.volcano.sh/
[3] Kthena v0.4.0: https://github.com/volcano-sh/kthena/releases/tag/v0.4.0
[4] 冲突解决机制: https://github.com/volcano-sh/kthena/pull/779
[5] 可配置的Prefix-Cache系统: https://github.com/volcano-sh/kthena/pull/844
[6] 基于 Role 的滚动更新机制: https://github.com/volcano-sh/kthena/pull/802
[7] 直接通过 Kubernetes Events 暴露 Role 的状态: https://github.com/volcano-sh/kthena/pull/676
[8] 路由元数据: https://github.com/volcano-sh/kthena/pull/621
[9] ModelScope 协议的支持: https://github.com/volcano-sh/kthena/pull/861