前言
環(huán)境:centos7.9、k8s 1.22.17、docker-ce-20.10.9
gpu資源也是服務(wù)器中常見(jiàn)的一種資源,gpu即顯卡,一般用在人工智能、圖文識(shí)別、大模型等領(lǐng)域,其中nvidia gpu是nvidia公司生產(chǎn)的nvidia類(lèi)型的顯卡,amd gpu則是adm公司生產(chǎn)的amd類(lèi)型gpu。企業(yè)中服務(wù)器最常見(jiàn)的就是英偉達(dá)gpu服務(wù)器了。
本篇也主要講解英偉達(dá)驅(qū)動(dòng)相關(guān)的知識(shí)。
nvidia gpu驅(qū)動(dòng)安裝
nvidia gpu驅(qū)動(dòng)安裝只是涉及物理節(jié)點(diǎn)的驅(qū)動(dòng)安裝,不涉及k8s,這里簡(jiǎn)單講解一下gpu服務(wù)器如何安裝nvidia驅(qū)動(dòng)。
環(huán)境確認(rèn)、卸載nouveau
#查看服務(wù)器是否有g(shù)pu
[root@gpu ~]# lspci | grep -i nvidia
0b:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
13:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
#查看服務(wù)器是否已經(jīng)安裝有g(shù)pu英偉達(dá)驅(qū)動(dòng)
lsmod | grep -i nvidia
#查看gpu型號(hào)、gpu驅(qū)動(dòng)版本等,能列出信息說(shuō)明驅(qū)動(dòng)已經(jīng)安裝成功,沒(méi)有信息則說(shuō)明還沒(méi)安裝驅(qū)動(dòng)
nvidia-smi
#查看是否安裝有默認(rèn)驅(qū)動(dòng),沒(méi)有跳過(guò)該步驟,有顯示內(nèi)容則說(shuō)明安裝有默認(rèn)驅(qū)動(dòng),需要卸載掉,不然會(huì)和nvidia沖突,卸載步驟如下
lsmod | grep nouveau
centos6:vim /etc/modprobe.d/blacklist.conf
centos7:vim /usr/lib/modprobe.d/dist-blacklist.conf
#centos 7直接使用命令修改
ls /usr/lib/modprobe.d/dist-blacklist.conf && echo $?
sed -i -e '/blacklist viafb/ablacklist nouveau' -e '/blacklist viafb/aoptions nouveau modeset=0' /usr/lib/modprobe.d/dist-blacklist.conf && echo $?
echo "檢查是否修改成功:";grep 'nouveau' /usr/lib/modprobe.d/dist-blacklist.conf
#或者手動(dòng)編輯文件亦可,在blacklist viafb等列的文件末尾添加下面兩句
blacklist nouveau
options nouveau modeset=0
#備份原來(lái)的鏡像,重新生成鏡像文件,可以臨時(shí)禁用,重啟,再次確認(rèn)是否已經(jīng)禁用/卸載
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
modprobe -r nouveau
reboot
lsmod | grep nouveau
確認(rèn)當(dāng)前英偉達(dá)顯卡的型號(hào)
lspci | grep -i nvidia #復(fù)制下面的1eb8
0b:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
13:00.0 3D controller: NVIDIA Corporation Device 1eb8 (rev a1)
打開(kāi)網(wǎng)站查詢(xún):https://admin.pci-ids.ucw.cz/read/PC/10de
拖到底部的查詢(xún)框輸出1eb8,點(diǎn)擊查詢(xún)即可,輸出顯示類(lèi)似的如下信息即可得知gpu型號(hào)是Tesla T4
Name: TU104GL [Tesla T4]
Discussion
Name: TU104GL [Tesla T4]
T4CFantasy
下載nvidia驅(qū)動(dòng)
英偉達(dá)驅(qū)動(dòng)官網(wǎng):https://www.nvidia.cn/Download/index.aspx?lang=cn
在下拉列表中進(jìn)行選擇,針對(duì)NVIDIA產(chǎn)品確定合適的驅(qū)動(dòng),這里我就這樣選擇:
產(chǎn)品類(lèi)型: Data Center / Tesla
產(chǎn)品系列: T-Series
產(chǎn)品家族: Tesla T4
操作系統(tǒng): Linux 64-bit
CUDA Toolkit: 11.4
語(yǔ)言: Chinese (Simplified)
選擇好之后點(diǎn)擊搜索,顯示驅(qū)動(dòng)的版本是:470.199.02,然后點(diǎn)擊下載即可,在產(chǎn)品支持列表中可以看到,我們選擇的這個(gè)470.199.02版本驅(qū)動(dòng)其實(shí)還可以支持很多版本的顯卡,如下:
A-Series:
NVIDIA A800, NVIDIA A100, NVIDIA A40, NVIDIA A30, NVIDIA A16, NVIDIA A10, NVIDIA A2
RTX-Series:
RTX 8000, RTX 6000, NVIDIA RTX A6000, NVIDIA RTX A5000, NVIDIA RTX A4000, NVIDIA T1000, NVIDIA T600, NVIDIA T400
HGX-Series:
HGX A800, HGX A100
T-Series:
Tesla T4
V-Series:
Tesla V100
P-Series:
Tesla P100, Tesla P40, Tesla P6, Tesla P4
K-Series:
Tesla K80, Tesla K520
M-Class:
M60, M40 24GB, M40, M6, M4
所以,基本上470.199.02這個(gè)版本的驅(qū)動(dòng)就可以支持Tesla T4、NVIDIA A800、NVIDIA A100、Tesla V100、Tesla P4等常見(jiàn)的顯卡.
注意:
選擇不同的CUDA下載的驅(qū)動(dòng)包會(huì)不同,比如CUDA選擇的是11.4,搜索結(jié)果顯示的是驅(qū)動(dòng)包是470.199.02
如果CUDA選擇的是11.6,搜索結(jié)果顯示的驅(qū)動(dòng)包是510.108.03.
所以這個(gè)需要根據(jù)業(yè)務(wù)上支持的cuda版本來(lái)選擇下載對(duì)應(yīng)的顯卡驅(qū)動(dòng)和cuda.
nvidia gpu驅(qū)動(dòng)安裝
#將下載的gpu驅(qū)動(dòng)文件上傳到服務(wù)器安裝即可
yum install gcc make -y
#直接安裝即可,視情況加參數(shù)
chmod a+x NVIDIA-Linux-x86_64-470.199.02.run
./NVIDIA-Linux-x86_64-470.199.02.run
gpu資源的使用限制
在k8s中,gpu資源的名稱(chēng)叫做nvidia/gpu
或者amd/gpu
,其中是nvidaia公司的生產(chǎn)的nvidaia類(lèi)型的gpu,后者是amd公司生產(chǎn)的amd類(lèi)型gpu。
注意,目前對(duì)gpu的使用配置有如下限制:
1、gpu資源只能在limits字段設(shè)置,不可以?xún)H指定 requests 而不指定 limits,可以同時(shí)指定 limits 和 requests,不過(guò)這兩個(gè)值必須相等,
2、可以指定 gpu 的 limits 而不指定其 requests,則pod默認(rèn)將requests值等價(jià)于limits 值;
3、 pod中的容器之間是不共享 gpu 的,gpu 也不可以超量分配(注:cpu可以超量使用);
4、每個(gè)容器可以請(qǐng)求一個(gè)或者多個(gè) gpu,但是必須是整數(shù),用小數(shù)值來(lái)請(qǐng)求部分 gpu 是不允許的。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-754269.html
安裝nvidia-docker(不推薦)
nvidia-docker是一個(gè)工具,用于在gpu啟用的Linux系統(tǒng)上運(yùn)行Docker容器。它提供了一個(gè)命令行接口,使得在gpu上運(yùn)行深度學(xué)習(xí)和機(jī)器學(xué)習(xí)任務(wù)的容器變得更為方便。通過(guò)使用nvidia-docker,可以輕松地配置和管理gpu容器環(huán)境,而無(wú)需手動(dòng)安裝和配置各種依賴(lài)項(xiàng)。
nvidia-docker并不會(huì)與已經(jīng)安裝好的Docker沖突。nvidia-docker是一個(gè)額外的工具,用于在Docker中更方便地使用gpu,它與Docker共存并為其提供額外的功能。在安裝過(guò)程中,nvidia-docker會(huì)檢測(cè)系統(tǒng)是否安裝了Docker,并會(huì)自動(dòng)地與Docker進(jìn)行集成,以提供對(duì)gpu容器的支持。因此,安裝nvidia-docker后,可以繼續(xù)使用已經(jīng)安裝好的Docker工具,并能夠在Docker中更方便地使用gpu。
nvidia-docker屬于舊一代的工具,適用于docker19.3以下版本,目前,官方推薦使用nvidia-container-toolkit,這是github最新的支持方案,nvidia docker2已被nvidia container toolkits取代,所以更推薦使用nvidia container toolkits。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-754269.html
#以下僅顯示如何安裝nvidia-docker2,建議使用nvidia container toolkits
#復(fù)制一份原始的docker配置文件,nvidia-docker2安裝后會(huì)覆蓋原始的docker配置文件
cp /etc/docker/daemon.json /etc/docker/daemon.json.bak
#下載倉(cāng)庫(kù)
wget https://nvidia.github.io/nvidia-docker/centos7/x86_64/nvidia-docker.repo && mv nvidia-docker.repo /etc/yum.repos.d/
或者
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | \
sudo tee /etc/yum.repos.d/nvidia-docker.repo
#安裝nvidia-docker
#安裝的時(shí)候發(fā)現(xiàn)如下報(bào)錯(cuò),可能是鏡像倉(cāng)庫(kù)不存在的問(wèn)題,但是更新緩存之后又正常下載gpgkey,可以正常安裝
#報(bào)錯(cuò):https://nvidia.github.io/libnvidia-container/centos7/x86_64/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found
yum makecache
yum search --showduplicates nvidia-docker
yum install -y nvidia-docker2
#安裝后發(fā)現(xiàn)docker配置文件被覆蓋了,所以手動(dòng)修改還原
[root@gpu ~]# cd /etc/docker/
-rw-r--r-- 1 root root 136 Mar 31 2023 daemon.json
-rw-r--r-- 1 root root 119 Oct 11 23:28 daemon.json.rpmorig
[root@gpu docker]# cat daemon.json #這個(gè)是nvidia-docker2后自動(dòng)創(chuàng)建的
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
[root@gpu docker]# cat daemon.json.rpmorig #原始的docker配置文件
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
# 最終的docker配置文件
[root@gpu docker]# cat daemon.json
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"default-runtime": "nvidia", #新加一行,指定docker的默認(rèn)運(yùn)行時(shí)
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
#注:docker需要運(yùn)行時(shí)為nvidia才能使用gpu,故設(shè)置默認(rèn)運(yùn)行時(shí)為nvidia
#重啟docker
[root@gpu docker]# systemctl restart docker
#查看docker默認(rèn)運(yùn)行時(shí)
docker info | grep -i 'Default Runtime'
#驗(yàn)證,能正常顯示gpu顯卡信息即說(shuō)明成功
docker run --rm --runtime=nvidia nvidia/cuda:9.0-base nvidia-smi
安裝nvidia-container-toolkit(推薦)
#復(fù)制一份docker配置文件,以防被覆蓋
cp /etc/docker/daemon.json /etc/docker/daemon.json.bak
#根據(jù)官網(wǎng)步驟安裝nvidia-container-toolkit
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-yum-or-dnf
Configure the repository:
#下載倉(cāng)庫(kù)
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
#安裝NVIDIA Container Toolkit
yum search --showduplicates nvidia-container-toolkit
yum install -y nvidia-container-toolkit
#配置容器運(yùn)行時(shí)
#nvidia-ctk命令將會(huì)修改/etc/docker/daemon.json文件以便Docker可以使用nvidia容器運(yùn)行時(shí)
nvidia-ctk runtime configure --runtime=docker
#實(shí)際上,上面nvidia-ctk命令是往/etc/docker/daemon.json文件追加了如下參數(shù)
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
}
#重啟dockers
systemctl restart docker
#測(cè)試容器中使用gpu
#使用下面的任意一條命令運(yùn)行一個(gè)簡(jiǎn)單的容器測(cè)試,可以正常顯卡的信息則說(shuō)明配置成功
#--gpus N 表示分配多少gpu顯卡到容器,all表示全部gpu顯卡
#--runtime指定運(yùn)行時(shí)為nvidia,要使用nvidia運(yùn)行時(shí)才能正常使用gpu,當(dāng)前默認(rèn)運(yùn)行時(shí)是runc
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
docker run --rm --runtime=nvidia nvidia/cuda:9.0-base nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.199.02 Driver Version: 470.199.02 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| gpu Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | gpu-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 Off | 00000000:0B:00.0 Off | 0 |
| N/A 34C P0 25W / 70W | 0MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 Tesla T4 Off | 00000000:13:00.0 Off | 0 |
| N/A 35C P0 26W / 70W | 0MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
#修改docker默認(rèn)運(yùn)行時(shí)
#docker要使用nvidia運(yùn)行時(shí)才能正常使用gpu,以上我們使用docker run命令臨時(shí)設(shè)置啟動(dòng)容器的運(yùn)行時(shí),但在k8s中,kubelet調(diào)用docker,所以要將docker默認(rèn)運(yùn)行時(shí)設(shè)置為nvidia.
#查看當(dāng)前docker默認(rèn)運(yùn)行時(shí)
docker info | grep -i 'Default Runtime'
Default Runtime: runc
#修改docker默認(rèn)運(yùn)行時(shí)
vim /etc/docker/daemon.json
{
"exec-opts": [
"native.cgroupdriver=systemd"
],
"default-runtime": "nvidia", #設(shè)置默認(rèn)運(yùn)行時(shí)
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
}
}
#重啟docker并確認(rèn)默認(rèn)運(yùn)行時(shí)生效
systemctl restart docker
docker info | grep -i 'Default Runtime'
k8s安裝nvidia-device-plugin插件
#查看節(jié)點(diǎn)資源情況
#這說(shuō)明k8s節(jié)點(diǎn)沒(méi)有識(shí)別到gpu資源,即使當(dāng)前節(jié)點(diǎn)有g(shù)pu資源
kubectl describe nodes gpu
Capacity:
cpu: 40
ephemeral-storage: 51175Mi
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 16417696Ki
pods: 110
#k8s中要識(shí)別gpu資源,需要安裝nvidia-device-plugin插件,注冊(cè)分配gpu主要由device-plugin插件完成
#官網(wǎng):https://github.com/NVIDIA/k8s-device-plugin
wget https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.1/nvidia-device-plugin.yml
#vim nvidia-device-plugin.yml #該文件存在hostpath的卷,確認(rèn)kubelet的安裝路徑正確
kubectl apply -f nvidia-device-plugin.yml
kubectl get pod -n kube-system | grep nvidia-device-plugin
#再次查看k8s的gpu節(jié)點(diǎn)資源情況就可以顯示gpu資源了
kubectl describe nodes gpu
...........
Capacity:
cpu: 40
ephemeral-storage: 51175Mi
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 16417696Ki
nvidia.com/gpu: 2 #2個(gè)gpu顯卡
pods: 110
pod中使用gpu
#為gpu節(jié)點(diǎn)打標(biāo)簽
kubectl label node gpu gpu-node=true
#創(chuàng)建pod測(cè)試
cat >>gpu-deploy.yaml <<'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
name: gpu-deployment
spec:
replicas: 1
selector:
matchLabels:
app: gpu
template:
metadata:
labels:
app: gpu
spec:
containers:
- name: gpu-container
image: nvidia/cuda:9.0-base
command: ["sleep"]
args: ["100000"]
resources:
limits:
nvidia.com/gpu: 1
nodeSelector:
gpu-node: "true"
EOF
kubectl apply -f gpu-deploy.yaml
#pod中正常顯示gpu顯卡信息,說(shuō)明已經(jīng)可以正常使用gpu資源了
kubectl exec -it $(kubectl get pod | grep gpu-deployment | awk '{print $1}') -- nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.199.02 Driver Version: 470.199.02 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| gpu Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | gpu-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 Off | 00000000:0B:00.0 Off | 0 |
| N/A 27C P8 8W / 70W | 0MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
.........
k8s集群gpu虛擬化
#前面我們說(shuō)過(guò),分配的gpu資源必須是整數(shù),如下,gpu-deployment中的資源gpu限制設(shè)置為0.5
resources:
limits:
nvidia.com/gpu: "0.5"
報(bào)錯(cuò):
# deployments.apps "gpu-deployment" was not valid:
# * spec.template.spec.containers[0].resources.limits[nvidia.com/gpu]: Invalid value: resource.Quantity{i:resource.int64Amount{value:5, scale:-1}, d:resource.infDecAmount{Dec:(*inf.Dec)(nil)}, s:"", Format:"DecimalSI"}: must be an integer
#在實(shí)際使用場(chǎng)景中,我們需要將gpu虛擬化以實(shí)現(xiàn)更小粒度的資源分配
#開(kāi)源的虛擬化gpu解決方案https://github.com/AliyunContainerService/gpushare-scheduler-extender
#1、部署gpu擴(kuò)展器
kubectl create -f https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/config/gpushare-schd-extender.yaml
#2、修改調(diào)度器scheduler,不同的k8s版本使用的配置文件不相同,選擇自己的k8s版本來(lái)部署
#2.1、適用于Kubernetes v1.23之前的版本
cd /etc/kubernetes
curl -O https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/config/scheduler-policy-config.json
#復(fù)制一份備份
cp /etc/kubernetes/manifests/kube-scheduler.yaml /etc/kubernetes/kube-scheduler.yaml
#添加下面的command參數(shù)和掛載卷、掛載點(diǎn)參數(shù)
vim /etc/kubernetes/manifests/kube-scheduler.yaml
- --policy-config-file=/etc/kubernetes/scheduler-policy-config.json
- mountPath: /etc/kubernetes/scheduler-policy-config.json
name: scheduler-policy-config
readOnly: true
- hostPath:
path: /etc/kubernetes/scheduler-policy-config.json
type: FileOrCreate
name: scheduler-policy-config
#2.2、適用于Kubernetes v1.23+的版本(含v1.23)
kubectl create -f https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/config/gpushare-schd-extender.yaml
cd /etc/kubernetes
curl -O https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/config/scheduler-policy-config.yaml
#復(fù)制一份備份
cp /etc/kubernetes/manifests/kube-scheduler.yaml /etc/kubernetes/kube-scheduler.yaml
#添加下面的command參數(shù)和掛載卷、掛載點(diǎn)參數(shù)
vim /etc/kubernetes/manifests/kube-scheduler.yaml
- --config=/etc/kubernetes/scheduler-policy-config.yaml
- mountPath: /etc/kubernetes/scheduler-policy-config.yaml
name: scheduler-policy-config
readOnly: true
- hostPath:
path: /etc/kubernetes/scheduler-policy-config.yaml
type: FileOrCreate
name: scheduler-policy-config
#3、部署gpu device-plugin
#如果之前部署過(guò)nvidia-device-plugin,請(qǐng)卸載,可使用kubectl delete ds -n kube-system nvidia-device-plugin-daemonset刪除
#為gpu節(jié)點(diǎn)打gpushare=true標(biāo)簽,因?yàn)橄旅姘惭b的ds定義了節(jié)點(diǎn)標(biāo)簽選擇器
kubectl label node <target_node> gpushare=true
wget https://raw.githubusercontent.com/AliyunContainerService/gpushare-device-plugin/master/device-plugin-rbac.yaml
kubectl create -f device-plugin-rbac.yaml
# 默認(rèn)情況下,GPU顯存以GiB為單位,若需要使用MiB為單位,需要在這個(gè)文件中,將--memory-unit=GiB修改為--memory-unit=MiB
wget https://raw.githubusercontent.com/AliyunContainerService/gpushare-device-plugin/master/device-plugin-ds.yaml
vim device-plugin-ds.yaml #將--memory-unit=GiB修改為--memory-unit=MiB
kubectl create -f device-plugin-ds.yaml
#4、安裝kubectl擴(kuò)展
#安裝kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.12.1/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/bin/kubectl
#安裝kubectl擴(kuò)展
cd /usr/bin/
wget https://github.com/AliyunContainerService/gpushare-device-plugin/releases/download/v0.3.0/kubectl-inspect-gpushare
chmod u+x /usr/bin/kubectl-inspect-gpushare
#查看gpu資源
kubectl describe nodes master1 | grep -i -A10 'Capacity'
Capacity:
aliyun.com/gpu-count: 2 #gpu資源
aliyun.com/gpu-mem: 30218 #gpu資源,30218MiB,剛好是2張卡15109MiB相加之和
#創(chuàng)建pod,可以正常創(chuàng)建
cat >gpu-deploy.yaml <<'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
name: gpu-deployment
spec:
replicas: 1
selector:
matchLabels:
app: gpu
template:
metadata:
labels:
app: gpu
spec:
containers:
- name: gpu-container
image: nvidia/cuda:9.0-base
command: ["sleep"]
args: ["100000"]
resources:
limits:
aliyun.com/gpu-mem: 14
nodeSelector:
gpu-node: "true"
EOF
#使用kubectl inspect gpushare命令查看gpu使用資源情況
[root@master1 data]# kubectl inspect gpushare 或kubectl inspect gpushare -d
NAME IPADDRESS GPU0(Allocated/Total) GPU1(Allocated/Total) GPU Memory(MiB)
master1 192.168.110.1 0/15109 0/15109 0/30218
------------------------------------------------------------------
Allocated/Total GPU Memory In Cluster:
0/30218 (0%)
[root@master1 data]#
#存在的問(wèn)題
#ds中設(shè)置了--memory-unit=MiB參數(shù),那pod中的aliyun.com/gpu-mem的單位是什么,是GiB還是MiB
aliyun.com/gpu-mem: 20
#如果是G,設(shè)置為20,應(yīng)該是滿足資源的,如果是Mib,設(shè)置為15109MiB也應(yīng)該是滿足的呀,設(shè)置為14000MiB也應(yīng)該是滿足的
#但是就是一直報(bào)錯(cuò):Warning FailedScheduling 3m44s default-scheduler 0/1 nodes are available: 1 Insufficient GPU Memory in one device.
#為什么這里顯示one device
到了這里,關(guān)于k8s中如何使用gpu、gpu資源講解、nvidia gpu驅(qū)動(dòng)安裝的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!