这次做智能驾驶感知环境复现,我先做了一轮镜像预检。
原因很简单:环境里有 CUDA、ROS2、PyTorch、Prometheus 和 K8s 基础组件,镜像来源不在一个地方。直接启动服务,容易把镜像问题和算法问题混在一起。
预检目标
先确认这些容器能拉下来:
docker pull docker.1ms.run/osrf/ros:humble-desktop
docker pull docker.1ms.run/pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime
docker pull nvcr.1ms.run/nvidia/cuda:12.4.1-runtime-ubuntu22.04
docker pull quay.1ms.run/prometheus/prometheus:v2.54.1
这一步只验证镜像链路,不看模型效果。
compose 记录
services:
ros-bag-runner:
image: docker.1ms.run/osrf/ros:humble-desktop
infer-worker:
image: docker.1ms.run/pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime
cuda-check:
image: nvcr.1ms.run/nvidia/cuda:12.4.1-runtime-ubuntu22.04
command: ["nvidia-smi"]
metrics:
image: quay.1ms.run/prometheus/prometheus:v2.54.1
执行:
docker compose pull
docker compose up -d
如果这里失败,先不要看推理代码。
K8s 预拉
后面如果要放到 K8s,新节点先做:
crictl pull k8s.1ms.run/pause:3.9
crictl pull k8s.1ms.run/coredns/coredns:v1.10.1
crictl pull nvcr.1ms.run/nvidia/cuda:12.4.1-runtime-ubuntu22.04
crictl pull quay.1ms.run/prometheus/prometheus:v2.54.1
这样可以提前排掉 ImagePullBackOff 这类问题。
复盘
智能驾驶感知环境里,真正耗时间的不一定是代码调试,很多时候是 CUDA、推理框架、数据回放、监控组件这些基础容器没有先稳定下来。
我这次的顺序是:
- 先列镜像;
- 按来源预拉;
- 固定 compose;
- K8s 节点预拉;
- 容器正常后再看模型和数据。
这个顺序适合之后复用。