我正在尝试在 GKE 上部署一个模型,使用 GPU 提供张量流模型。我用 docker 创建了一个容器,它在云虚拟机上运行良好。我正在尝试使用 GKE 进行扩展,但存在部署并出现上述错误。
我创建了只有 1 个节点的 GKE 集群,带有一个 GPU(Tesla T4)。我根据文档安装了驱动程序
据我所知,它似乎很成功(一个名为nvidia-driver-installer-tckv4
的 pod 已添加到节点的 pods 列表中,并且它正在运行没有错误)
接下来,我创建了部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: reph-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: reph
spec:
containers:
- name: reph-container
image: gcr.io/<project-id>/reph_serving_gpu
resources:
limits:
nvidia.com/gpu: 1
ports:
- containerPort: 8500
args:
- "--runtime=nvidia"
然后我运行了 kubectl create -f d1.yaml,容器退出并在日志中出现上述错误。
我还尝试将操作系统从cos切换到ubuntu,并从文档中运行一个示例
我安装了上面的驱动程序,这次是用于 ubuntu。 并应用了取自 GKE 文档的 yaml(仅更改了要消耗的 GPU 数量):
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod
spec:
containers:
- name: my-gpu-container
image: nvidia/cuda:10.0-runtime-ubuntu18.04
resources:
limits:
nvidia.com/gpu: 1
这次我得到了CrashLoopBackOff,日志中没有任何内容。
知道错了吗?我是 kubernetes 和 docker 的新手,所以我可能会错过一些微不足道的东西,但我真的试图坚持使用 GKE 文档。
好的,我认为文档对此还不够清楚,但似乎缺少的是LD_LIBRARY_PATH
环境变量中包含/usr/local/nvidia/lib64
。 以下 yaml 文件成功运行:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: reph-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: reph
spec:
containers:
- name: reph-container
env:
- name: LD_LIBRARY_PATH
value: "$LD_LIBRARY_PATH:/usr/local/nvidia/lib64"
image: gcr.io/<project-id>/reph_serving_gpu
imagePullPolicy: IfNotPresent
resources:
limits:
nvidia.com/gpu: 1
requests:
nvidia.com/gpu: 1
ports:
- containerPort: 8500
args:
- "--runtime=nvidia"
这是 GKE 文档中的相关部分