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中可以正常使用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值