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、模型路径和应用日志。

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

相关文章
|
1月前
|
运维 Kubernetes 应用服务中间件
CI/CD流水线镜像拉取耗时从47分钟降到2分钟,我做了这几件事
换镜像加速源,CI/CD构建从47分钟骤降至2分钟!非代码/硬件优化,仅切换为毫秒镜像(1ms.run)——全源加速(Docker Hub、GHCR、k8s.gcr等),30台服务器10分钟批量配置,失败率归零,凌晨发布成功率100%。
201 16
|
存储 Prometheus 监控
Grafana 系列文章(十四):Helm 安装 Loki
Grafana 系列文章(十四):Helm 安装 Loki
|
2月前
|
人工智能 安全 Linux
2026 最新版:JVSClaw 与 OpenClaw 全对比 + 阿里云 / 本地部署 + 百炼配置避坑全攻略
2026年AI智能体普及元年,OpenClaw(开源本地优先)与JVSClaw(阿里云托管SaaS)双轨并行。本攻略以零术语、可复制命令,手把手解决选型困惑、部署失败、API异常、安全配置等新手高频问题,助你3分钟拥有一台7×24小时在线的私人AI助手。
|
Kubernetes API 容器
loki日志收集全网最全教程(强推)
loki日志收集全网最全教程(强推)
|
18天前
|
人工智能 Linux Docker
Docker 部署 Open WebUI + Ollama 完整教程(Windows / Linux 通用)—— 打造自己的本地OpenAI
无需复杂配置!Docker一键部署Open WebUI+Ollama,Windows/Linux通用,新手也能轻松上手。无需依赖云端,打造专属本地OpenAI,实现可视化聊天交互,兼顾数据隐私,还附带常见问题排查,全程步骤清晰,快速拥有本地大模型平台!
828 0
Docker 部署 Open WebUI + Ollama 完整教程(Windows / Linux 通用)—— 打造自己的本地OpenAI
|
3月前
|
人工智能 运维 前端开发
AI Agent 重构职场逻辑:新一代开发者的职业路线调整框架
AI Agent正重塑职场逻辑:流程型岗位被自动化压缩,经验壁垒被技术抹平。本文从职场变革、能力重构(命题思维/生产力证明/跨界能力)及实践路径三方面,系统梳理开发者适配AI时代的职业新路线。(239字)
271 6
|
Kubernetes PyTorch 算法框架/工具
2026年4月实测:我把公司K8s集群的Docker镜像拉取速度提升了20倍
上周公司AI训练节点扩容,PyTorch镜像直连拉取32分钟/个,8台集群部署几近瘫痪。实测5种加速方案后,发现小众但稳定的「docker.1ms.run」服务——3.8GB镜像仅需1分48秒,提速18倍!一键配置Docker/Containerd,CI/CD构建从20分钟回归3分半。2026年境内镜像拉取困局,务实解法在此。(239字)
|
4月前
|
运维 安全 Linux
【运维实战】企业级 NFS 文件共享服务 · 一键自动化部署方案 (龙蜥/银河麒麟 V10 /openEuler /CentOS)
面向国产化替代需求,阜阳云动科技推出企业级NFS一键部署脚本,支持银河麒麟V10、openEuler、CentOS、龙蜥等主流系统。实现多部门隔离、权限可控、跨平台兼容的文件共享服务,自动化创建用户、目录与客户端挂载脚本,显著提升部署效率与安全性。开箱即用,助力政企高效构建安全稳定的NFS共享环境。
727 1
【运维实战】企业级 NFS 文件共享服务 · 一键自动化部署方案 (龙蜥/银河麒麟 V10 /openEuler /CentOS)
|
7月前
|
Ubuntu 关系型数据库 MySQL
MySQL源码编译安装
本文详细介绍了MySQL 8.0及8.4版本的源码编译安装全过程,涵盖用户创建、依赖安装、cmake配置、编译优化等步骤,并提供支持多Linux发行版的一键安装脚本,适用于定制化数据库部署需求。
1892 4
MySQL源码编译安装
|
11月前
|
机器学习/深度学习 敏捷开发 人工智能
2025产品需求管理最佳实践:从流程优化到工具选型 详解项目需求管理实战
本文深入探讨产品需求管理的核心概念与全流程优化方法,涵盖需求采集、分析、优先级排序及落地实现等关键环节。通过多维度需求采集、科学评估与敏捷迭代,结合团队角色分工,确保需求价值最大化。同时对比评测板栗看板、Jira、Axosoft等管理工具,并展望AI赋能下的智能生成、预测性分析与自动化流程新趋势,助力企业精准把握市场动态,打造爆款产品。掌握需求管理精髓,是产品成功的关键驱动力。