用 Knative 给 AI 服务器做 Serverless 推理配置

AI 服务器上做 Serverless 配置,目标不是把整台机器变成无服务器,而是让推理服务按请求启动、空闲时缩容到零,减少显卡空转。
适合请求波动大、模型可以接受冷启动延迟的场景,比如图片分类、文本摘要。
如果你要求毫秒级响应,Serverless 不一定合适。

先确认服务器和集群前提

以下步骤假设你有一台已装好 NVIDIA 驱动和 Docker 的 Linux 服务器,并且能正常执行 nvidia-smi。
推荐用单节点 Kubernetes 加 Knative 做最小验证,生产环境再考虑多节点。

检查驱动和容器运行时:

nvidia-smi
docker run --rm --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smi

第二条命令能输出显卡信息,说明 Docker 已经能调用 GPU。
如果报错 could not select device driver,先安装并配置 nvidia-container-toolkit,再重启 Docker。

安装 Knative 并启用 GPU 支持

Knative Serving 负责按请求伸缩,底层用 Kubernetes 调度容器。
单节点环境可以用 k3s 快速起步:

curl -sfL https://get.k3s.io | sh -
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl get nodes

节点状态为 Ready 后,安装 Knative Serving 和 Kourier 网络层。
版本号请以官方发布页为准,不要直接照搬旧版本:

kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.12.0/serving-core.yaml
kubectl apply -f https://github.com/knative/net-kourier/releases/download/knative-v1.12.0/kourier.yaml
kubectl patch configmap/config-network -n knative-serving --type merge -p '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}'

安装完成后用 kubectl get pods -n knative-serving 检查,所有 Pod 应为 Running。

部署一个会缩容到零的 GPU 推理服务

准备一个简单的推理镜像,启动后监听 8080 端口。
Knative Service 的配置重点在 autoscaling.knative.dev/min-scale: "0" 和 GPU 资源声明:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: gpu-infer
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/min-scale: "0"
        autoscaling.knative.dev/target: "1"
    spec:
      containers:
        - image: your-registry/infer:latest
          ports:
            - containerPort: 8080
          resources:
            limits:
              nvidia.com/gpu: "1"

保存为 gpu-infer.yaml 后执行 kubectl apply -f gpu-infer.yaml。
用 kubectl get ksvc gpu-infer 查看状态,等到 READY 为 True 再测试。

验证缩容和常见报错

先发一次请求确认服务可用,再等待约 90 秒观察 Pod 数量:

curl -H "Host: gpu-infer.default.example.com" http://<节点IP>:31896/
kubectl get pods -l serving.knative.dev/service=gpu-infer

请求成功后,Pod 数量先变为 1,空闲后应降为 0 或不再显示。
如果一直没有缩容,检查 min-scale 是否被其他配置覆盖,以及是否有持续健康检查流量。

常见报错中,Insufficient nvidia.com/gpu 说明集群没有识别到 GPU 资源,
需要安装 NVIDIA device plugin;RevisionMissing 通常是镜像拉取失败或端口不一致,
用 kubectl describe ksvc gpu-infer 查看事件。

避坑提醒

  • 缩容到零意味着冷启动,首次请求会包含拉镜像和加载模型的时间,大模型可能超过 30 秒,建议设置 min-scale: "1" 保底。
  • GPU 资源必须写 limits,只写 requests 不会真正占用显卡。
  • 单节点测试时 Kourier 默认使用 NodePort,注意防火墙放行对应端口。
  • 不要在生产环境直接套用示例镜像标签 latest,固定版本便于回滚。

按以上步骤完成 AI服务器Serverless配置 后,你可以用 kubectl get pods 和请求日志确认服务是否按预期伸缩。
如果请求量长期稳定,Serverless 的缩容收益有限,保留常驻实例可能更简单。

分享到:
上一篇
AI服务器算力云原生配置:用容器和调度器管好多卡资源
下一篇
AI服务器微服务配置用Docker Compose拆分推理与网关
1
系统公告

关于香港云优质服务器IP地址更换的通知

尊敬的客户: 因原IP运营商大幅涨价,为避免成本转嫁至用户,我司决定更换IP服务商。本次更换后,您的续费价格将保持不变,且新IP网络质量与服务标准不受影响。新IP已分配至后台,即刻生效(更换的新IP都是香港原生IPv4)。 涉及 IP 段: 45.192.x.x 旧 IP 停用时间: 2026 年 12 月 1 日
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意