Jetson Xavier NX上Kubernetes GPU PodPending及容器启动失败求助
Jetson Xavier NX K8s集群GPU Pod pending及容器启动失败问题解决
1. 解决libcuda.so文件缺失的核心问题
- Jetson Xavier NX是ARM64架构,你用的
nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda10.2是x86架构镜像,和Jetson的CUDA库路径、版本完全不匹配,直接换ARM适配的镜像测试:
先验证这个基础镜像能否正常识别GPU,后续测试用sudo nerdctl run --rm --gpus all nvcr.io/nvidia/l4t-base:r32.7.1 nvidia-smil4t-cuda系列镜像,确保版本和主机JetPack对应的CUDA版本一致(比如JetPack 4.5对应CUDA 11.0)。 - 先查主机上实际存在的CUDA库版本:
ls /usr/lib/aarch64-linux-gnu/libcuda.so*
2. 修正containerd的nvidia runtime配置
- 打开containerd的
config.toml(通常路径为/etc/containerd/config.toml),找到nvidia runtime相关配置,确保如下:[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia] runtime_type = "io.containerd.runc.v2" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options] BinaryName = "nvidia-container-runtime" SystemdCgroup = true - 配置默认runtime为nvidia:
sudo nvidia-container-runtime configure --runtime=containerd - 重启containerd生效:
sudo systemctl restart containerd
3. 检查nvidia-device-plugin的有效性
- 查看插件Pod是否正常运行:
kubectl get pods -n kube-system | grep nvidia-device-plugin - 如果Pod异常,查看日志排查问题:
kubectl logs <插件Pod名称> -n kube-system - 注意:必须使用适配Jetson的device-plugin镜像,比如
nvcr.io/nvidia/k8s-device-plugin:v0.12.3-jetson,不要用x86版本的插件镜像。
4. 验证K8s节点的GPU资源注册
- 执行命令查看节点的GPU资源状态:
kubectl describe node node1 - 检查
Allocated resources区域,确认存在nvidia.com/gpu的资源条目且可用数大于0,这样GPU Pod才能被正常调度。
内容的提问来源于stack exchange,提问作者tuioku
相关产品推荐
相关产品推荐

