tkestack/gpu-manager在k8s1.23版本之后的使用方法

 更新时间:2023年04月27日 14:38:20   作者:JosephThatwho  
这篇文章主要介绍了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版本之后的使用的文章就介绍到这了,更多相关tkestack/gpu-manager在k8使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • K8S 实用工具之合并多个kubeconfig实现详解

    K8S 实用工具之合并多个kubeconfig实现详解

    这篇文章主要为大家介绍了K8S 实用工具之合并多个kubeconfig实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • k8s之ingress-nginx详解和部署方案

    k8s之ingress-nginx详解和部署方案

    Ingress是一种向k8s集群外部的客户端公开服务的方法,下面这篇文章主要给大家介绍了关于k8s之ingress-nginx详解和部署方案的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • kubernetes YAML文件的使用

    kubernetes YAML文件的使用

    这篇文章主要介绍了kubernetes YAML文件的使用,帮助大家更好的理解和学习使用kubernetes,感兴趣的朋友可以了解下
    2021-04-04
  • 云原生Kubernetes初始化容器Init使用教程

    云原生Kubernetes初始化容器Init使用教程

    这篇文章主要为大家介绍了云原生Kubernetes初始化容器Init使用教程,有需要的朋友可以借鉴参考下,希望能够有所帮助祝大家多多进步早日升职加薪
    2022-03-03
  • 详解推荐使用systemd timer替代cronjob

    详解推荐使用systemd timer替代cronjob

    这篇文章主要为大家介绍了推荐使用systemd timer替代0cronjob原理分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Kubernetes存储系统数据持久化管理详解

    Kubernetes存储系统数据持久化管理详解

    这篇文章主要为大家介绍了Kubernetes存储系统数据持久化管理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • k8s目录和文件挂载到宿主机的方式

    k8s目录和文件挂载到宿主机的方式

    Docker是一种流行的容器化技术,它允许开发人员在不同的环境中构建、打包和运行应用程序,下面这篇文章主要给大家介绍了关于k8s目录和文件挂载到宿主机的相关资料,需要的朋友可以参考下
    2024-01-01
  • 一篇文章读懂K8S的PV和PVC以及实践攻略

    一篇文章读懂K8S的PV和PVC以及实践攻略

    本文详细介绍了Kubernetes中的存储卷(Volume)机制,包括PersistentVolume(PV)、PersistentVolumeClaim(PVC)及其与后端存储的关系,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • Podman开机自启容器实现过程及与Docker对比

    Podman开机自启容器实现过程及与Docker对比

    这篇文章主要为大家介绍了Podman开机自启容器实现过程,通过示例代码的形式进行演绎过程,有需要的朋友可以参考下,希望可以有所帮助
    2021-09-09
  • k8s中secret的用法详解

    k8s中secret的用法详解

    secret用于加密pod访问数据库的用户凭证,这篇文章主要介绍了k8s中secret的用法详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04

最新评论