containerd 节点 GPU 镜像预热记录

简介: 本次在GPU节点复现推理环境时,首遇镜像拉取失败(ImagePullBackOff),Pod卡在ContainerCreating状态。通过`crictl pull`逐源验证并预热vLLM、CUDA、Prometheus及pause镜像,明确分离镜像问题与模型问题,提升排障效率。(239字)

这次在一台新加的 GPU 节点上复现推理环境,先踩到的不是模型加载错误,而是容器镜像没有拉下来。

Pod 状态一直停在:

ContainerCreating

事件里能看到:

Pulling image
context deadline exceeded
ImagePullBackOff

所以这次没有从模型参数开始看,而是先把节点镜像预热单独做了一遍。

镜像清单

这套环境里至少需要这些镜像:

镜像 作用
vllm/vllm-openai 推理服务
nvidia/cuda CUDA runtime 验证
prometheus/prometheus 指标采集
pause K8s 基础镜像

先在可以执行 Docker 的机器上按来源测:

docker pull docker.1ms.run/vllm/vllm-openai:latest
docker pull nvcr.1ms.run/nvidia/cuda:12.4.1-runtime-ubuntu22.04
docker pull quay.1ms.run/prometheus/prometheus:latest
docker pull k8s.1ms.run/pause:3.10

这里的目标只是确认镜像入口可用,不代表推理服务已经验证完成。

节点侧 crictl 验证

目标节点使用 containerd,所以真正要测的是 crictl pull

crictl pull docker.1ms.run/vllm/vllm-openai:latest
crictl pull nvcr.1ms.run/nvidia/cuda:12.4.1-runtime-ubuntu22.04
crictl pull quay.1ms.run/prometheus/prometheus:latest
crictl pull k8s.1ms.run/pause:3.10

查看本地镜像:

crictl images | grep -E "vllm|cuda|prometheus|pause"

如果这一步失败,Deployment 里继续调副本数也没有用。Pod 还是会停在镜像阶段。

临时 DaemonSet

节点多的时候,我会用一个临时 DaemonSet 做预热。下面这个配置只演示思路,实际使用时要按节点标签和镜像版本调整。

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: gpu-image-prewarm
  namespace: ops
spec:
  selector:
    matchLabels:
      app: gpu-image-prewarm
  template:
    metadata:
      labels:
        app: gpu-image-prewarm
    spec:
      nodeSelector:
        accelerator: nvidia
      tolerations:
        - operator: Exists
      initContainers:
        - name: pull-vllm
          image: docker.1ms.run/vllm/vllm-openai:latest
          command: ["sh", "-c", "python -V || true"]
        - name: pull-cuda
          image: nvcr.1ms.run/nvidia/cuda:12.4.1-runtime-ubuntu22.04
          command: ["sh", "-c", "nvidia-smi || true"]
        - name: pull-metrics
          image: quay.1ms.run/prometheus/prometheus:latest
          command: ["sh", "-c", "prometheus --version || true"]
      containers:
        - name: hold
          image: k8s.1ms.run/pause:3.10

执行后观察:

kubectl apply -f gpu-image-prewarm.yaml
kubectl rollout status daemonset/gpu-image-prewarm -n ops
kubectl get pod -n ops -o wide

预热完成后,再扩容真正的推理服务。

两个小细节

第一个细节是不要只在本地 Docker 验证。K8s 节点如果是 containerd,还是要在节点上用 crictl pull 走一遍。

第二个细节是不要长期依赖 latest。这次示例里为了阅读简单用了 latest,正式环境更适合固定 tag 或 digest,避免预热的是一个版本,发布时拉到另一个版本。

记录

这次复现后,我把顺序记成了:

  1. 先看 Pod event。
  2. 如果是 ImagePullBackOff,先处理镜像阶段。
  3. 按来源预拉 Docker Hub、NVIDIA、Quay、K8s 镜像。
  4. 目标节点用 crictl pull 验证。
  5. 镜像通过后,再看 RuntimeClass、GPU device plugin、模型路径和应用日志。

这样能把镜像问题和推理问题分开。否则容器还没创建成功,就开始调模型参数,很容易浪费时间。

相关文章
|
5月前
|
并行计算 API Docker
Docker+vLLM内网离线部署Qwen3 流程
本教程详解如何在A10四卡内网环境中,通过Docker+ vLLM离线部署Qwen3-32B/Qwen3-VL-30B-Instruct大模型。涵盖环境准备、镜像离线导入、模型下载、容器启动及参数调优,支持FP8/KV缓存/张量并行等高性能配置,助力安全高效私有化推理
6718 8
|
存储 Prometheus 监控
Grafana 系列文章(十四):Helm 安装 Loki
Grafana 系列文章(十四):Helm 安装 Loki
|
Kubernetes API 容器
loki日志收集全网最全教程(强推)
loki日志收集全网最全教程(强推)
|
4月前
|
人工智能 安全 Linux
2026 最新版:JVSClaw 与 OpenClaw 全对比 + 阿里云 / 本地部署 + 百炼配置避坑全攻略
2026年AI智能体普及元年,OpenClaw(开源本地优先)与JVSClaw(阿里云托管SaaS)双轨并行。本攻略以零术语、可复制命令,手把手解决选型困惑、部署失败、API异常、安全配置等新手高频问题,助你3分钟拥有一台7×24小时在线的私人AI助手。
|
4月前
|
运维 Linux API
OpenClaw Docker容器化部署、生命周期管理指南|阿里云+本地部署+千问API配置+运维实战+故障排查
2026年,Docker容器化已成为OpenClaw(Clawdbot)部署的首选方案——通过容器封装,可实现环境一致性、安全隔离、快速迁移的核心优势,彻底解决“本地能跑、云端崩”的环境兼容问题。无论是阿里云服务器的长期稳定运行,还是本地MacOS/Linux/Windows11的开发调试,Docker都能提供标准化的部署与管理流程。
777 0
|
3月前
|
人工智能 Linux Docker
Docker 部署 Open WebUI + Ollama 完整教程(Windows / Linux 通用)—— 打造自己的本地OpenAI
无需复杂配置!Docker一键部署Open WebUI+Ollama,Windows/Linux通用,新手也能轻松上手。无需依赖云端,打造专属本地OpenAI,实现可视化聊天交互,兼顾数据隐私,还附带常见问题排查,全程步骤清晰,快速拥有本地大模型平台!
1609 0
Docker 部署 Open WebUI + Ollama 完整教程(Windows / Linux 通用)—— 打造自己的本地OpenAI
|
5月前
|
人工智能 运维 前端开发
AI Agent 重构职场逻辑:新一代开发者的职业路线调整框架
AI Agent正重塑职场逻辑:流程型岗位被自动化压缩,经验壁垒被技术抹平。本文从职场变革、能力重构(命题思维/生产力证明/跨界能力)及实践路径三方面,系统梳理开发者适配AI时代的职业新路线。(239字)
382 6
|
6月前
|
运维 安全 Linux
【运维实战】企业级 NFS 文件共享服务 · 一键自动化部署方案 (龙蜥/银河麒麟 V10 /openEuler /CentOS)
面向国产化替代需求,阜阳云动科技推出企业级NFS一键部署脚本,支持银河麒麟V10、openEuler、CentOS、龙蜥等主流系统。实现多部门隔离、权限可控、跨平台兼容的文件共享服务,自动化创建用户、目录与客户端挂载脚本,显著提升部署效率与安全性。开箱即用,助力政企高效构建安全稳定的NFS共享环境。
878 1
【运维实战】企业级 NFS 文件共享服务 · 一键自动化部署方案 (龙蜥/银河麒麟 V10 /openEuler /CentOS)
|
7月前
|
人工智能 JSON 数据挖掘
大模型应用开发中MCP与Function Call的关系与区别
MCP与Function Call是大模型应用中两大关键技术。前者为跨模型标准化通信协议,实现工具与模型解耦;后者是模型调用外部功能的内置机制。二者互补协作,推动AI应用向更开放、灵活、可扩展的方向发展。