模型服务暴露与网关负载均衡及并发调优(Ingress/Gateway API)
2026-08-11 09:57:40 # Kubernetes

一、背景

模型服务对外提供 API,需要稳定的入口、合理的负载均衡与并发调优,否则会出现长连接断开、排队、单副本瓶颈。

二、环境信息

  • K8s + vLLM 推理 Deployment
  • 入口:Ingress NGINX 或 Gateway API
  • 压测:wrk / locust

三、操作要点

1. 服务暴露

1
2
3
4
5
6
7
8
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata: { name: llm-route }
spec:
parentRefs: [{ name: llm-gateway }]
rules:
- matches: [{ path: { type: PathPrefix, value: /v1 } }]
backendRefs: [{ name: vllm-svc, port: 8000 }]

2. 负载均衡与副本

  • 多副本 vLLM,Service 默认轮询(无状态推理可轮询;有会话亲和需求时按需)
  • 网关开启健康检查,摘除不健康副本

3. 并发调优

1
2
3
4
# vLLM 关键参数
--max-num-seqs 256 # 最大并发序列
--max-model-len 8192
--gpu-memory-utilization 0.9
  • 网关:proxy-read-timeout / proxy-send-timeout 调大避免长推理 504
  • 限流:网关层限流保护后端;客户端退避重试

四、验证方式

1
2
3
wrk -t4 -c64 -d60s -s post.lua http://<gw>/v1/completions
kubectl get pods -l app=vllm # 多副本均衡分担
# 观察 p99 延迟与队列长度

五、常见问题

  • 单副本瓶颈:扩副本 + 网关负载均衡;超大模型需 TP 多卡
  • 连接数打满:调大网关/内核 ulimit 与 keepalive
  • 长连接超时 504:增大网关 timeout,推理设置合理 max_tokens
  • 推理排队:提高 --max-num-seqs 或扩容;前端限流防雪崩
  • 502 网关错误:后端就绪探针配置不当,修正 readinessProbe