【发布时间】:2021-10-09 17:14:45
【问题描述】:
我想运行一个使用 GPU 的 docker 容器(它运行一个 cnn 来检测视频中的对象),然后在 Kubernetes 上运行该容器。
我可以单独从 docker 运行容器没有问题,但是当我尝试从 Kubernetes 运行容器时,它找不到 GPU。
我使用这个命令运行它:
kubectl exec -it namepod /bin/bash
这是我遇到的问题:
kubectl exec -it tym-python-5bb7fcf76b-4c9z6 /bin/bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@tym-python-5bb7fcf76b-4c9z6:/opt# cd servicio/
root@tym-python-5bb7fcf76b-4c9z6:/opt/servicio# python3 TM_Servicev2.py
Try to load cfg: /opt/darknet/cfg/yolov4.cfg, weights: /opt/yolov4.weights, clear = 0
CUDA status Error: file: ./src/dark_cuda.c : () : line: 620 : build time: Jul 30 2021 - 14:05:34
CUDA Error: no CUDA-capable device is detected
python3: check_error: Unknown error -1979678822
root@tym-python-5bb7fcf76b-4c9z6:/opt/servicio#
编辑。 我按照 Nvidia docker 2 指南中的所有步骤下载了适用于 Kubernetes 的 Nvidia 插件。
但是,当我部署 Kubernetes 时,它一直处于“待处理”状态,并且从未真正启动。我不再收到错误消息,但它永远不会开始。 pod 如下所示:
gpu-pod 0/1 Pending 0 3m19s
编辑 2。
我最终重新安装了所有内容,现在我的 pod 似乎已完成但未运行。像这样。
default gpu-operator-test 0/1 Completed 0 62m
回答维克托。 当我运行这个命令时:
kubectl describe pod gpu-operator-test
我明白了:
Name: gpu-operator-test
Namespace: default
Priority: 0
Node: pdi-mc/192.168.0.15
Start Time: Mon, 09 Aug 2021 12:09:51 -0500
Labels: <none>
Annotations: cni.projectcalico.org/containerID: 968e49d27fb3d86ed7e70769953279271b675177e188d52d45d7c4926bcdfbb2
cni.projectcalico.org/podIP:
cni.projectcalico.org/podIPs:
Status: Succeeded
IP: 192.168.10.81
IPs:
IP: 192.168.10.81
Containers:
cuda-vector-add:
Container ID: docker://d49545fad730b2ec3ea81a45a85a2fef323edc82e29339cd3603f122abde9cef
Image: nvidia/samples:vectoradd-cuda10.2
Image ID: docker-pullable://nvidia/samples@sha256:4593078cdb8e786d35566faa2b84da1123acea42f0d4099e84e2af0448724af1
Port: <none>
Host Port: <none>
State: Terminated
Reason: Completed
Exit Code: 0
Started: Mon, 09 Aug 2021 12:10:29 -0500
Finished: Mon, 09 Aug 2021 12:10:30 -0500
Ready: False
Restart Count: 0
Limits:
nvidia.com/gpu: 1
Requests:
nvidia.com/gpu: 1
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-9ktgq (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
kube-api-access-9ktgq:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events: <none>
我正在使用这个配置文件来创建 pod
apiVersion: v1
kind: Pod
metadata:
name: gpu-operator-test
spec:
restartPolicy: OnFailure
containers:
- name: cuda-vector-add
image: "nvidia/samples:vectoradd-cuda10.2"
resources:
limits:
nvidia.com/gpu: 1
【问题讨论】:
-
请不要将文字内容作为截图发布;它会影响搜索,难以阅读,并且在how to ask 页面中明确提及。在寻求帮助时,您还应该禁止在您的词汇表中使用“它不起作用”,因为它并没有说明您修复集群的具体尝试是什么,确切地说,什么不起作用
-
你是对的,谢谢你的建议。
-
你好@FelipeSerna。您能告诉我们您使用的是哪个版本的 k8s?
-
我使用的是 Kubernetes 1.21.3
-
你好@FelipeSerna。您能否
kubectl describe待处理的 Pod 并从中检查任何相关日志?请使用输出编辑您的问题。
标签: docker kubernetes docker-compose gpu