您好,登錄后才能下訂單哦!
這篇文章主要介紹“tkestack/gpu-manager在k8s1.23版本之后如何使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“tkestack/gpu-manager在k8s1.23版本之后如何使用”文章能幫助大家解決問題。
在1.25版本的k8s集群中部署gpu-manage時,雖然顯示gpu節點上gpu-manage的pod實例都是running狀態,但是給pod申領tencent.com/vcuda-memory
資源時,卻始終找不到有資源的節點。
查看節點的詳情時,返回的allocatable
字段中也沒有相關資源:
Allocatable: cpu: 48 ephemeral-storage: 48294789041 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 65291520Ki pods: 110 System Info: Machine ID: 50ca20960ea94552bd5ef84a20ce7e47
說明gpu-manager
并沒有正確運行。
查看任意gpu-manager的pod日志,可以看到如下異常信息:
rebuild ldcache
launch gpu manager
E0426 06:17:06.729262 2384 server.go:131] Unable to set Type=notify in systemd service file?
E0426 06:17:11.731947 2384 server.go:152] can't create container runtime manager: context deadline exceeded
說明gpu-manager和容器運行時接口通信失敗了。
查看異常信息指向的代碼:
... containerRuntimeManager, err := containerRuntime.NewContainerRuntimeManager( m.config.CgroupDriver, m.config.ContainerRuntimeEndpoint, m.config.RequestTimeout) if err != nil { klog.Errorf("can't create container runtime manager: %v", err) return err } klog.V(2).Infof("Container runtime manager is running") ...
可以看到是訪問m.config.ContainerRuntimeEndpoint
超時,這個變量的默認值定義在cmd/manager/options/options.go
const ( DefaultDriver = "nvidia" DefaultQueryPort = 5678 DefaultSamplePeriod = 1 DefaultVirtualManagerPath = "/etc/gpu-manager/vm" DefaultAllocationCheckPeriod = 30 DefaultCheckpointPath = "/etc/gpu-manager/checkpoint" DefaultContainerRuntimeEndpoint = "/var/run/dockershim.sock" DefaultCgroupDriver = "cgroupfs" )
可以看到這里用的運行時接口是/var/run/dockershim.sock
,但是在k8s1.23版本之后,接口路徑已經改為/var/run/cri-dockerd.sock
,所以修改默認之后重新編譯即可。
使用make img
既可以用源碼的Makefile自動編譯打包成新的鏡像,但是源碼的/home/zp/work/gpu-manager/build/Dockerfile
中的git222
不一定能裝上,可以改成git
,另外有一些依賴需要國際上的支持。
編譯后的鏡像在1.25版本的k8s中可以正常使用。
關于“tkestack/gpu-manager在k8s1.23版本之后如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。