问题描述:

1、生产环境,基于K8s部署的应用,某个应用按要求需要运行9个副本,项目成功运行50余天后,应用的pod突然由9个变为6个,其他3个变为Pengding状态;

2、9个Pod需要消耗服务器的GPU资源,通过NodeSelector对pod和Node打选择标签,共3个GPU Node,正常工作时每个Node运行3个Pod,出现问题后每个Node只能运行两个Pod。

3、集群使用英伟达官方的GPU devcie-plug查看管理GPU资源,GPU devcie-plug以daemonset的方式运行在各个Node上。

排查过程:

1、使用"kubectl describe pod $PodName -n $namespaces"查看pod描述。

发现调度失败的原因是:“0/9 nodes are available: 6 Insufficient nvidia.com/gpu, 6 node(s) didn't match node selector”,显然是GPU数量不足;

2、检查Pod的部署yaml文件,podyaml的nodeSelector“node-engine-stream=True”“node-gpu-t4=True”和node上的标签一致,标签选择器正常;

3、查看Node上GPU资源的使用情况,3个GPU节点的T4卡数量都是4个,但是已经使用用的GPU卡数分别是2、3、3个,且已使用的T4卡负载率都比较低,由此可见并不是Node GPU数量不足所致;

4、查看看schedule的日志,发现大量的日志“Unable to find backoff value for pod default/engine-video-process-worker-face-face-24902-t4-6b5bcf6d9c-swdwp in backoffQ”,说明Schdule调度异常;

5、逐个节点上重启静态Pod schdule、api-server、control-manager后,再次重启业务Pod,仍然只有6个处于pengding状态;

6、查看K8s Schdule源码,发现"Unable to find backoff value for pod default/engine-video-process-worker-face-face-24902-t4-6b5bcf6d9c-swdwp in backoffQ”并不是问题的根本原因。

结论:GPU Node的资源、标签选择器都是正常的,api-server、schdule、control-manager均工作正常,但是pod无法成功调度,可能是GPU 插件未能成功将Node的GPU资源反映到K8s中去。

解决办法:

重新启动nvidia-device-plugin pod,再重启业务Pod的deployemnt,问题解决。

K8S对Pod调度失败,Schdule控制器报错1 scheduling_queue.go:346] Unable to find backoff value for pod default/engine-video-process-worker-face-face-24902-t4-6b5bcf6d9c-swdwp in backoffQ的更多相关文章

  1. 使用git克隆仓库到本地报错:SSL certificate problem: unable to get local issuer certificate

    第一次使用Git工具克隆仓库,使用的是HTTPS链接,失败了.发现是因为通过HTTPS访问时,如果服务器上的SSL证书未经过第三方机构认证,Git就会报错. 解决方法:通过命令关闭验证 git con ...

  2. ie11 selenium 报错org.openqa.selenium.NoSuchWindowException: Unable to get browser 处理方法

    selenium + ie11运行报错 org.openqa.selenium.NoSuchWindowException: Unable to get browser (WARNING: The s ...

  3. 关于xpath语句完全正确,但是页面报错: no such element: Unable to locate element: {"method":"xpath","selector":"xpath"}

    之前使用selenium-webdriver来写UI的自动化脚本,发现有一个元素一直无法定位,查看其源码,如下 利用xpathChecker验证了xpath语句的是正确的,但是控制台一直报错: no ...

  4. pip运行报错Fatal error in launcher: Unable to create process using pip.exe

    使用pip的时候报错Fatal error in launcher: Unable to create process using pip.exe 解决办法,升级pip python -m pip i ...

  5. pip3命令报错Fatal error in launcher: Unable to create process using '"d:\old_files\py3.6\python.exe" "E:\py3.6\Scripts\pip3.exe" list'

    cmd输入pip3 list命令报错 Fatal error in launcher: Unable to create process using '"d:\old_files\py3.6 ...

  6. eclipse 启动 tomcat 报错:Server mylocalhost was unable to start within 45 seconds

    这个专门转载一篇博文也是为了讽刺一下自己二逼的程序员职业,哈哈. eclipse启动tomcat服务器报错:Server mylocalhost was unable to start within ...

  7. maven web报错:org.apache.jasper.JasperException: Unable to compile class for JSP

    原博文地址:https://blog.csdn.net/ken1583096683/article/details/80837281 maven web项目启动没问题,访问页面就报错:org.apac ...

  8. pod lib create ObjcName 时候报错error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54

    众所周知 pod lib create ObjcName 需要从git 上边克隆模版 :https://github.com/CocoaPods/pod-template.git 然后有时候会很慢报错 ...

  9. 转载:Win7系统 利用 pycharm导入Tensorflow失败,出现报错——ImportError:DLL load failed with error code -1073741795的解决方式

    转载自:https://blog.csdn.net/shen123me/article/details/80621103 下面的报错信息困扰了一天,网上的各种方法也都试过了,还是失败,最后自己瞎试,把 ...

  10. maven项目(引入依赖失败, pom.xml 报错\爆红)

    引入项目过程中,idea引入磁盘的某个的maven项目 这里以springboot项目以例子,发现pom.xml 的依赖大面积爆红,springboot的版本依赖也报错了,然后发现下面有进度条在下载, ...

随机推荐

  1. Nginx 之fastcgi常用配置项说明

    在LNMP环境中,我们都知道nginx如果要解析php脚本语言,就必须通过配置fastcgi模块来提供对php支持,那么在配置fastcgi的时候,关于fastcgi配置项的值应该怎么设置才能让其发挥 ...

  2. BUUCTF---old flashion

    1.题目 2.知识 3.解题 很奇怪,一段英文字母,看起来像维吉尼亚,但需要key,不知道什么是Key,我们丢到q爆破中试试 直接得出来了flag:flag{n1_2hen-d3_hu1-mi-ma_ ...

  3. 【Java】内部类详解

    说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟. 一.内 ...

  4. FireDAC开发DataSnap应用系统【1】-快储功能

    FireDAC是吧DataSnap服务器当成API来调用,而dbExpress使用IAppServer接口. 关键点: 1.客户端调用API要回传数据,那么FireDAC把数据已Stream的格式传递 ...

  5. nodejs目录与文件遍历

    路径相关函数 path.basename('/foo/bar/baz/asdf/quux.html'); // Returns: 'quux.html' path.basename('/foo/bar ...

  6. HTB-UnderPass

    该靶机nmap扫描udp发现161端口snmp服务,利用snmpwalk扫描得到目录信息,使用dirsearch扫描得到一个yml文件,存放数据库账号密码,记录下来,此时需要登录口,使用字典扫描拼接/ ...

  7. java基础之关键字(this、static、super、final、 权限修饰符)

    一.this的含义 this:代表所在类的当前对象的引用(地址值),即对象自己的引用. 记住 :方法被哪个对象调用,方法中的this就代表那个对象.即谁在调用,this就代表谁 this的三种运用: ...

  8. jmeter使用:解决压测时获取token问题

    在执行压测过程中,首先要执行登录接口来获取token.如果并发数比较大只需要一个用户的登录token,可以使用setup线程组.如果是模拟多个用户登录获取token,需要使用仅一次控制器. 一.添加s ...

  9. 定时任务Cron表达式工具类Cron Util

    依赖 cron-utils的github地址:https://github.com/jmrozanec/cron-utils <dependency> <groupId>com ...

  10. 通过远程连接,docker访问获取数据表信息

    <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId&g ...