国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

k8s中如何使用gpu、gpu資源講解、nvidia gpu驅(qū)動(dòng)安裝

這篇具有很好參考價(jià)值的文章主要介紹了k8s中如何使用gpu、gpu資源講解、nvidia gpu驅(qū)動(dòng)安裝。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

環(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 是不允許的。

安裝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)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • k8s資源管理命令與Namespace使用詳解

    目錄 一、前言 二、k8s概述 三、k8s常用操作管理命令 3.1 kubectl 命令用法

    2023年04月16日
    瀏覽(22)
  • 使用Velero備份、恢復(fù)k8s集群上的資源

    使用Velero備份、恢復(fù)k8s集群上的資源

    一、Velero簡(jiǎn)介 Velero提供備份和恢復(fù) Kubernetes 集群資源和持久卷的工具。 Velero功能: 對(duì)群集進(jìn)行備份,并在丟失時(shí)進(jìn)行還原。 將集群資源遷移到其他集群。 Velero 包括: 在群集上運(yùn)行的服務(wù)器 在本地運(yùn)行的命令行客戶端 開(kāi)源地址:https://github.com/vmware-tanzu/velero 官方文檔:

    2024年02月04日
    瀏覽(35)
  • 揭秘高效運(yùn)維:如何用kubectl top命令實(shí)時(shí)監(jiān)控K8s資源使用情況?

    揭秘高效運(yùn)維:如何用kubectl top命令實(shí)時(shí)監(jiān)控K8s資源使用情況?

    往期精彩: 提升CKA考試勝算:一文帶你全面了解RBAC權(quán)限控制! kubectl top 是一個(gè)用于查看 Kubernetes 集群中資源使用情況的命令。它可以顯示節(jié)點(diǎn)或Pod的CPU、內(nèi)存和存儲(chǔ)的使用情況。該命令要求正確配置 Metrics Server 并在服務(wù)器上工作。 Metrics Server 是 Kubernetes 內(nèi)置自動(dòng)縮放管道的

    2024年02月19日
    瀏覽(25)
  • 【K8S 】K8S配置資源管理

    【K8S 】K8S配置資源管理

    1、概念 用來(lái)保存密碼。token,敏感的K8S資源 這類(lèi)數(shù)據(jù)可以直接存放在鏡像中,但是放在Secret中可以更方便的控制,減少暴露的風(fēng)險(xiǎn) Secret:保存加密的信息 2、Secret類(lèi)型: docker-registry:存儲(chǔ)docker倉(cāng)庫(kù)的認(rèn)證信息,以及docker的組件認(rèn)證信息(私有) generic:是Secret的默認(rèn)模式,

    2024年01月17日
    瀏覽(23)
  • k8s資源對(duì)象

    k8s資源對(duì)象

    什么是資源對(duì)象? 所謂資源對(duì)象是指在k8s上創(chuàng)建的資源實(shí)例;即通過(guò)apiserver提供的各資源api接口(可以理解為各種資源模板),使用yaml文件或者命令行的方式向?qū)?yīng)資源api接口傳遞參數(shù)賦值實(shí)例化的結(jié)果;比如我們?cè)趉8s上創(chuàng)建一個(gè)pod,那么我們就需要通過(guò)給apiserver交互,傳

    2024年02月03日
    瀏覽(25)
  • k8s 資源預(yù)留

    k8s 資源預(yù)留

    KUBERNETES資源管理之–資源預(yù)留 Kubernetes 的節(jié)點(diǎn)可以按照 Capacity 調(diào)度。node節(jié)點(diǎn)本身除了運(yùn)行不少驅(qū)動(dòng) OS 和 Kubernetes 的系統(tǒng)守護(hù)進(jìn)程,默認(rèn)情況下 pod 能夠使用節(jié)點(diǎn)全部可用容量, 除非為這些系統(tǒng)守護(hù)進(jìn)程留出資源,否則它們將與 pod 爭(zhēng)奪資源并導(dǎo)致節(jié)點(diǎn)資源短缺問(wèn)題。由于某

    2024年02月06日
    瀏覽(22)
  • k8s資源調(diào)度

    默認(rèn)的情況下,一個(gè)pod在哪個(gè)node節(jié)點(diǎn)上運(yùn)行,是由scheduler組件采取對(duì)應(yīng)的算法計(jì)算出來(lái)的,這個(gè)過(guò)程是不受人工控制的,在實(shí)際的使用過(guò)程中,這不能夠滿足客觀的場(chǎng)景,針對(duì)這樣的情況,k8s 提供了四大類(lèi)調(diào)度方式: 自動(dòng)調(diào)度: 運(yùn)行在哪個(gè)node節(jié)點(diǎn)上完全由scheduler 經(jīng)過(guò)一些里

    2024年02月08日
    瀏覽(21)
  • k8s資源介紹

    k8s資源介紹

    Kubernetes系統(tǒng)用于管理分布式節(jié)點(diǎn)集群中的微服務(wù)或容器化應(yīng)用程序,并且其提供了零停機(jī)時(shí)間部署、自動(dòng)回滾、縮放和容器的自愈(其中包括自動(dòng)配置、自動(dòng)重啟、自動(dòng)復(fù)制的高彈性基礎(chǔ)設(shè)施,以及容器的自動(dòng)縮放等)等功能。 Kubernetes系統(tǒng)最重要的設(shè)計(jì)因素之一是能夠橫向

    2024年01月20日
    瀏覽(32)
  • K8S部署后的使用:dashboard啟動(dòng)、使用+docker鏡像拉取、容器部署(ubuntu環(huán)境+gpu3080+3主機(jī)+部署深度學(xué)習(xí)模型)

    K8S部署后的使用:dashboard啟動(dòng)、使用+docker鏡像拉取、容器部署(ubuntu環(huán)境+gpu3080+3主機(jī)+部署深度學(xué)習(xí)模型)

    0、k8s安裝、docker安裝 參考:前兩步Ubuntu云原生環(huán)境安裝,docker+k8s+kubeedge(親測(cè)好用)_愛(ài)吃關(guān)東煮的博客-CSDN博客_ubantu部署kubeedge ?配置節(jié)點(diǎn)gpu: K8S調(diào)用GPU資源配置指南_思影影思的博客-CSDN博客_k8s 使用gpu 1、重置和清除舊工程:每個(gè)節(jié)點(diǎn)主機(jī)都要運(yùn)行 2、部署新的k8s項(xiàng)目:

    2023年04月20日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包