tkestack/gpu-manager在k8s1.23版本之后如何使用

其他教程   发布日期:2025年04月02日   浏览次数:176

这篇文章主要介绍“tkestack/gpu-manager在k8s1.23版本之后如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“tkestack/gpu-manager在k8s1.23版本之后如何使用”文章能帮助大家解决问题。

异常

在1.25版本的k8s集群中部署gpu-manage时,虽然显示gpu节点上gpu-manage的pod实例都是running状态,但是给pod申领

  1. tencent.com/vcuda-memory
资源时,却始终找不到有资源的节点。
查看节点的详情时,返回的
  1. allocatable
字段中也没有相关资源:
  1. Allocatable:
  2. cpu: 48
  3. ephemeral-storage: 48294789041
  4. hugepages-1Gi: 0
  5. hugepages-2Mi: 0
  6. memory: 65291520Ki
  7. pods: 110
  8. System Info:
  9. Machine ID: 50ca20960ea94552bd5ef84a20ce7e47

说明

  1. 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和容器运行时接口通信失败了。
查看异常信息指向的代码:

  1. ...
  2. containerRuntimeManager, err := containerRuntime.NewContainerRuntimeManager(
  3. m.config.CgroupDriver, m.config.ContainerRuntimeEndpoint, m.config.RequestTimeout)
  4. if err != nil {
  5. klog.Errorf("can't create container runtime manager: %v", err)
  6. return err
  7. }
  8. klog.V(2).Infof("Container runtime manager is running")
  9. ...

可以看到是访问

  1. m.config.ContainerRuntimeEndpoint
超时,这个变量的默认值定义在
  1. cmd/manager/options/options.go
  1. const (
  2. DefaultDriver = "nvidia"
  3. DefaultQueryPort = 5678
  4. DefaultSamplePeriod = 1
  5. DefaultVirtualManagerPath = "/etc/gpu-manager/vm"
  6. DefaultAllocationCheckPeriod = 30
  7. DefaultCheckpointPath = "/etc/gpu-manager/checkpoint"
  8. DefaultContainerRuntimeEndpoint = "/var/run/dockershim.sock"
  9. DefaultCgroupDriver = "cgroupfs"
  10. )

可以看到这里用的运行时接口是

  1. /var/run/dockershim.sock
,但是在k8s1.23版本之后,接口路径已经改为
  1. /var/run/cri-dockerd.sock
,所以修改默认之后重新编译即可。

编译

使用

  1. make img
既可以用源码的Makefile自动编译打包成新的镜像,但是源码的
  1. /home/zp/work/gpu-manager/build/Dockerfile
中的
  1. git222
不一定能装上,可以改成
  1. git
,另外有一些依赖需要国际上的支持。
编译后的镜像在1.25版本的k8s中可以正常使用。

以上就是tkestack/gpu-manager在k8s1.23版本之后如何使用的详细内容,更多关于tkestack/gpu-manager在k8s1.23版本之后如何使用的资料请关注九品源码其它相关文章!