AI服务器DevOps配置:用Ansible批量管好GPU推理节点

先想清楚要解决什么问题

AI服务器和普通Web服务器的差别在于:GPU驱动、CUDA版本、容器运行时三者必须匹配,任何一台机器版本不一致,推理任务就可能报错或性能异常。
手工逐台配置在两三台时还能应付,节点一多就会变成重复劳动和版本漂移。

所以AI服务器DevOps配置的核心目标很朴素:把每台机器的环境写成代码,做到一条命令重复部署、结果可核对。
本文以Ansible加Docker为方案,适合节点在3台以上、系统为Ubuntu 22.04或相近版本、已经能SSH登录的场景。
如果你只有单机,也可以只取剧本中的安装部分参考。

准备阶段:先把控制端和清单搭好

控制端只需要一台能SSH到所有GPU节点的Linux机器,不要求装显卡驱动。

sudo apt update && sudo apt install -y ansible
ansible --version

在项目目录下建立清单文件 inventory.ini,按角色分组:

[gpu_nodes]
ai-node01 ansible_host=192.168.1.11
ai-node02 ansible_host=192.168.1.12

[gpu_nodes:vars]
ansible_user=ops
ansible_ssh_private_key_file=~/.ssh/ai_ops

先做连通性检查,确认密钥和sudo权限都没问题:

ansible gpu_nodes -i inventory.ini -m ping
ansible gpu_nodes -i inventory.ini -m shell -a "nvidia-smi -L" --become

第二条命令能列出每台机器的GPU型号,说明驱动已就位;
若报 command not found,说明驱动还没装,需要先补驱动再进入下一步。不要跳过这一步,否则后面容器里看不到显卡,排查成本会高很多。

核心操作:用剧本固化安装与部署

第一步:统一安装容器运行时

编写 playbooks/base.yml,用官方脚本安装Docker并配置NVIDIA容器工具包:

- hosts: gpu_nodes
  become: true
  tasks:
    - name: 安装基础依赖
      apt:
        name: [ca-certificates, curl, gnupg]
        state: present
        update_cache: true

    - name: 安装nvidia-container-toolkit
      shell: |
        curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
          | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
        curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
          | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
          > /etc/apt/sources.list.d/nvidia-container-toolkit.list
        apt-get update && apt-get install -y nvidia-container-toolkit
        nvidia-ctk runtime configure --runtime=docker
        systemctl restart docker

执行:

ansible-playbook -i inventory.ini playbooks/base.yml

第二步:下发推理服务并验证

用模板把镜像版本和端口写成变量,避免每台机器手改。
在 group_vars/gpu_nodes.yml 中定义:

infer_image: "your-registry/infer-server:1.0.0"
infer_port: 8000

剧本中用 docker_container 模块启动,并加 device_requests 让容器拿到GPU。
部署完成后立刻做健康检查:

ansible gpu_nodes -i inventory.ini -m shell \
  -a "docker ps --format '{{.Names}} {{.Status}}'"
curl -s http://192.168.1.11:8000/health

预期结果是容器状态为 Up,健康接口返回正常状态码。
任何一台不一致,就单独用 --limit ai-node02 重跑该节点,而不是全量重来。

容易踩的坑

  • 驱动版本与容器镜像不匹配:镜像里的CUDA版本高于宿主机驱动支持范围时,容器启动会报 CUDA driver version is insufficient。升级驱动前先确认镜像要求的驱动下限。
  • 重启Docker会中断在线推理:base.yml 里重启了docker服务,生产节点应放到维护窗口执行,或先摘除流量。
  • 清单里混入非GPU机器:健康检查会因为 nvidia-smi 失败而中断整批任务,建议按角色分组,不要图省事全塞进一个组。
  • 密钥和仓库凭据写进剧本:私钥、镜像仓库密码应放在Ansible Vault或环境变量中,不要提交到版本库。

怎么确认配置真的生效

除了看容器状态,建议固定三项核对:每台机器 nvidia-smi -L 输出的GPU数量一致、容器内 nvidia-smi 可正常执行、健康接口返回内容一致。
把这三项写进一个检查剧本,每次发布后跑一遍,配置漂移就能在早期被发现。

常见疑问

没有GPU的机器也要装nvidia-container-toolkit吗? 不需要。
这套配置只针对推理节点,控制端和普通业务节点分开管理即可。

Ansible和Kubernetes该选哪个? 节点少、以单机容器部署为主时,Ansible更轻;
需要弹性调度、多副本和自动扩缩容时,再考虑Kubernetes这类编排平台。

剧本执行到一半失败怎么办? Ansible任务本身是幂等的,修好报错原因后重跑同一剧本即可,已完成的步骤不会重复破坏环境。

AI服务器DevOps配置的价值不在于工具多新,而在于每次扩容或重装都能得到一致的GPU环境。
先把清单、基础剧本和健康检查这三件事做扎实,再考虑加监控和灰度发布。

分享到:
上一篇
AI服务器微服务配置用Docker Compose拆分推理与网关
下一篇
AI服务器SRE日常巡检要做哪些配置检查
1
系统公告

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

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