使用ACK推理网关基于域名路由到不同模型服务

简介: 本文介绍如何在ACK推理网关中通过Gateway API配置基于不同域名的路由规则,实现将请求按域名分发至qwen和deepseek等不同模型服务,并提供完整的操作步骤与测试示例。

在实际使用场景中,基于网关的不同域名、将请求路由到不同的模型服务是常见的需求。本文简单介绍如何在ACK推理网关上使用Gateway API配置基于不同的域名路由到不同的模型服务。

前提条件

  • 已经在集群中部署了qwen和deepseek 模型服务,并声明了如下两个对应的InferencePool资源
apiVersion: inference.networking.x-k8s.io/v1alpha2
kind: InferencePool
metadata:
  name: qwen-inference-pool
  namespace: default
spec:
  selector:
    app: qwen
  targetPortNumber: 8000
---
apiVersion: inference.networking.x-k8s.io/v1alpha2
kind: InferencePool
metadata:
  name: deepseek-inference-pool
  namespace: default
spec:
  selector:
    app: deepseek
  targetPortNumber: 8000

操作步骤

1、创建Gateway资源,创建网关

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: inference-gateway
spec:
  gatewayClassName: ack-gateway
  infrastructure:
    parametersRef:
      group: gateway.envoyproxy.io
      kind: EnvoyProxy
      name: custom-proxy-config
  listeners:
    - allowedRoutes:
        namespaces:
          from: Same
      name: http-llm
      port: 8080
      protocol: HTTP

2、创建两个HTTPRoute资源,在网关上创建两条HTTP路由

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: qwen-inference-route
  namespace: default
spec:
  parentRefs:
    - group: gateway.networking.k8s.io
      kind: Gateway
      name: inference-gateway
  hostnames:
    - "qwen.test"
  rules:
    - backendRefs:
        - group: inference.networking.x-k8s.io
          kind: InferencePool
          name: qwen-inference-pool
          weight: 1
      matches:
        - path:
            type: PathPrefix
            value: /v1
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: deepseek-inference-route
  namespace: default
spec:
  parentRefs:
    - group: gateway.networking.k8s.io
      kind: Gateway
      name: inference-gateway
  hostnames:
    - "deepseek.test"
  rules:
    - backendRefs:
        - group: inference.networking.x-k8s.io
          kind: InferencePool
          name: deepseek-inference-pool
          weight: 1
      matches:
        - path:
            type: PathPrefix
            value: /v1

两条HTTPRoute分别具有不同的hostnames字段,以区分不同的域名。

3、测试路由效果

export GATEWAY_HOST=$(kubectl get gateway/inference-gateway -o jsonpath='{.status.addresses[0].value}')

将请求带上qwen.test域名

curl -XPOST $GATEWAY_HOST:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Host: qwen.test" \
  -d '{
    "model": "qwen",
    "messages": [{"role": "user", "content": "你是谁?"}],
    "temperature": 0.7
  }'

预期结果

{"id":"chatcmpl-30793fc0-35bc-470e-b622-73c44312f690","object":"chat.completion","created":1761530271,"model":"qwen","choices":[{"index":0,"message":{"role":"assistant","reasoning_content":null,"content":"我是来自阿里云的大规模语言模型,我叫通义千问。","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":22,"total_tokens":39,"completion_tokens":17,"prompt_tokens_details":null},"prompt_logprobs":null}

将请求带上deepseek.test域名

curl -XPOST $GATEWAY_HOST:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Host: deepseek.test" \
  -d '{
    "model": "deepseek",
    "messages": [{"role": "user", "content": "你是谁?"}],
    "temperature": 0.7
  }'

预期结果

{"id":"chatcmpl-56027d40-0183-402c-8525-7858213573db","object":"chat.completion","created":1761530292,"model":"deepseek","choices":[{"index":0,"message":{"role":"assistant","reasoning_content":null,"content":"您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。\n</think>\n\n您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":8,"total_tokens":81,"completion_tokens":73,"prompt_tokens_details":null},"prompt_logprobs":null}
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
人工智能 缓存 Kubernetes
ACK GIE配置建议
Gateway with Inference Extension是基于Kubernetes社区Gateway API及其扩展规范实现的增强型组件,支持四层/七层路由服务,并面向生成式AI推理场景提供负载均衡优化、服务管理简化等能力,适用于AI推理服务的高可用部署与性能优化。在不同的场景使用ACK Gateway with Inference Extension时,可能需要根据业务需求和高可用需要对网关和推理扩展进行不同的配置调整。本文主要介绍在实际业务场景中针对ACK GIE的配置建议,以获得更好的使用效果。
1039 23
|
5月前
|
监控 NoSQL API
使用ASMGlobalRateLimiter实现基于调用来源和请求路径的精细化全局限流
本文介绍在阿里云ASM服务网格中,结合Lua Filter与ASMGlobalRateLimiter,基于调用方Service Account身份和API路径实现多维度精细化全局限流,满足不同客户端访问同一服务不同接口需差异化配额的业务需求。(239字)
|
5月前
|
Shell Python Windows
Python 3.14安装教程 Windows版:环境变量配置+IDLE启动+自定义路径指南
Python是成熟稳定的开源面向对象语言,简单易学、跨平台。本文详解Python 3.14安装:下载解压→管理员运行Setup→勾选添加PATH和“为所有用户安装”→自定义路径(如D:\Python314)→完成安装→通过IDLE验证成功。
|
12月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
4537 4
|
8月前
|
弹性计算 人工智能 运维
2026年阿里云秒级部署OpenClaw(Clawdbot)并接入skills保姆级教程
2026年,OpenClaw(原Clawdbot,曾用名Moltbot)凭借轻量化架构、高适配性及强大的自动化能力,成为阿里云生态下最热门的AI自动化代理工具,其秒级部署方案彻底打破开源工具的技术门槛,无需复杂环境配置,零基础新手也能轻松上手。OpenClaw本身仅提供核心编排框架,而Skills作为其“能力扩展插件”,能赋予它网页浏览、邮件管理、数据统计、多平台联动等实操能力,二者结合可快速搭建专属智能助手,适配个人办公、企业运维、AI创意生产等多场景。
1193 6
|
12月前
|
存储 弹性计算 数据管理
阿里云对象存储OSS收费标准:存储费、流量价格及不同计费模式全解析
阿里云OSS收费标准涵盖存储、流量等费用,支持按量付费与资源包两种模式。标准存储按量0.09元/GB/月,包年500GB仅需118.99元,流量费按公网出方向计费,闲时0.25元/GB,忙时0.5元/GB,可购流量包更优惠。
3228 7
|
12月前
|
人工智能 数据挖掘 数据处理
构建AI智能体:五、Pandas常用函数介绍,CodeBuddy智能化处理Excel数据实例
Pandas是Python核心数据分析库,提供Series、DataFrame等灵活数据结构,支持高效的数据读写、清洗、筛选、合并与统计操作,广泛应用于数据处理与分析场景。
900 4
|
运维 Kubernetes Cloud Native
K8s
Kubernetes,源自Google的开源容器编排平台,被誉为数字时代的“隐形操作系统”。它以声明式API和控制器模式为核心,实现应用的自动化部署、扩缩容与自愈,支撑全球企业云原生转型。从微服务到AI、边缘计算,K8s正构建统一的分布式应用基石,重塑软件交付与运维范式,成为数字化世界的底层引擎。(238字)
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
1000 5