猫头虎分享云原生疑难杂Bug:PodUnschedulable: 0/1 nodes are available: 1 Insufficient CPU 解决方案

istio: 解决istio-proxy使用了资源配额导致新建pod处于pending状态的问题 本文记录了在mac搭建的istio环境在创建了4个带有istio-proxy的pod后,无法再新建pod的问题,提示 FailedScheduling 0/1 nodes are available: 1 Insufficient cpu. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod.,开始查找分析原因,最终找到解决方案。............... 阅读详情

🐯猫头虎分享云原生疑难杂Bug:PodUnschedulable: 0/1 nodes are available: 1 Insufficient CPU 解决方案

今天猫头虎带您探讨一个云原生开发中常见但又让人头疼的问题: Pod 无法调度,报错 PodUnschedulable: 0/1 nodes are available: 1 Insufficient CPU。这是许多粉丝在 Kubernetes 实际部署中遇到的问题,今天我将为大家带来详细的排查和解决步骤!🎯


🌟 摘要

关键词:Kubernetes Pod 调度问题、Insufficient CPU、云原生部署 Bug 解决方案
在 Kubernetes 中,PodUnschedulable 是一个非常常见的调度问题,尤其是在资源紧张或节点配置不当时。本文将通过详尽的技术分析,结合实战案例,帮助大家解决这一 Bug!同时,本文将探讨未来如何通过合理的资源管理和扩展避免此类问题。🚀


猫头虎是谁?

大家好,我是 猫头虎,猫头虎技术团队创始人,也被大家称为猫哥。我目前是COC北京城市开发者社区主理人、COC西安城市开发者社区主理人,以及云原生开发者社区主理人,在多个技术领域如云原生、前端、后端、运维和AI都具备丰富经验。

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用方法、前沿科技资讯、产品评测、产品使用体验,以及产品优缺点分析、横向对比、技术沙龙参会体验等。我的分享聚焦于云服务产品评测、AI产品对比、开发板性能测试和技术报告。

目前,我活跃在优快云、51CTO、腾讯云、阿里云开发者社区、知乎、微信公众号、视频号、抖音、B站、小红书等平台,全网粉丝已超过30万。我所有平台的IP名称统一为猫头虎或猫头虎技术团队。

我希望通过我的分享,帮助大家更好地掌握和使用各种技术产品,提升开发效率与体验。


作者名片 ✍️

  • 博主:猫头虎
  • 全网搜索关键词:猫头虎
  • 作者微信号:Libin9iOak
  • 作者公众号:猫头虎技术团队
  • 更新日期:2024年10月10日
  • 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能!

加入我们AI共创团队 🌐

加入猫头虎的共创圈,一起探索编程世界的无限可能! 🚀

部分专栏链接:

🔗 精选专栏:



猫头虎


🧐 问题背景:为什么会出现 Pod 无法调度?

粉丝提问

“猫哥,我在部署 Kubernetes 集群时,Pod 一直无法调度,总是提示 Insufficient CPU,这到底是什么原因?该如何解决?😭”

问题描述

当 Kubernetes 集群中某个节点的可用资源不足以满足 Pod 的调度请求时,Kubernetes 调度器会返回类似以下错误:

status:
  conditions:
  - type: PodScheduled
    status: "False"
    reason: Unschedulable
    message: "0/1 nodes are available: 1 Insufficient CPU."

🔍 问题原因分析

  1. 节点资源不足
    节点上可用的 CPU 或内存资源无法满足 Pod 请求的资源需求。

  2. 资源请求与限制设置不当
    如果 Pod 的 requests 或 limits 过高,调度器会认为当前节点资源不足。

  3. 调度约束问题
    如 nodeSelector 或 taints/tolerations 导致 Pod 只能调度到特定节点,但这些节点的资源不足。

  4. 集群资源分配不均
    部分节点资源利用率过高,而其他节点空闲,调度器无法有效分配。


💡 解决方案:逐步排查与解决

1️⃣ 检查节点资源状况

首先,确认集群节点的资源分布情况:

kubectl get nodes -o wide
kubectl describe node <node-name>

关注以下字段:

  • Allocated resources:显示当前节点已分配的 CPU/内存。
  • Conditions:检查节点是否有异常状态。

2️⃣ 确认 Pod 的资源配置

查看 Pod 的 requests 和 limits 是否合理:

kubectl describe pod <pod-name>

示例配置:

resources:
  requests:
    cpu: "500m"
    memory: "256Mi"
  limits:
    cpu: "1000m"
    memory: "512Mi"

注意:

  • requests 表示 Pod 调度的最低资源需求。
  • limits 是资源的上限,不影响调度。
✨ 优化建议:
  • 调整 requests 为实际需求的 50%-80%,以提升调度成功率。

3️⃣ 调整节点资源分配

如果节点资源不足,可以考虑扩展节点或调整分配:

方法 1:扩展节点
# 添加新节点到集群
kubeadm join <master-ip>:<port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
方法 2:移除低优先级 Pod

通过以下命令删除低优先级的 Pod:

kubectl delete pod <pod-name> --grace-period=0 --force

4️⃣ 检查调度策略

确认是否存在 nodeSelector 或 taints/tolerations 限制:

nodeSelector:
  disktype: ssd
tolerations:
- key: "key1"
  operator: "Equal"
  value: "value1"
  effect: "NoSchedule"

如果存在不必要的限制,建议移除。


5️⃣ 重启调度器并观察

重启 Kubernetes 调度器,并检查问题是否解决:

systemctl restart kubelet

🎯 代码案例演示

示例 1:优化 Pod 资源请求

以下是优化后的配置:

apiVersion: v1
kind: Pod
metadata:
  name: optimized-pod
spec:
  containers:
  - name: nginx
    image: nginx:latest
    resources:
      requests:
        cpu: "250m"
        memory: "128Mi"
      limits:
        cpu: "500m"
        memory: "256Mi"

示例 2:移除节点污点

kubectl taint nodes <node-name> key=value:NoSchedule-

❓ Q&A 常见问题

Q1: 如果资源请求设置得太低,会发生什么?
A1: 可能导致 Pod 启动后性能不足或被节点驱逐。

Q2: 如何避免调度问题?
A2: 通过设置合理的资源配置和水平扩展集群节点,预防此类问题。


📊 总结与表格

问题原因解决方法注意事项
节点资源不足扩展节点、删除低优先级 Pod检查节点实际分配情况
资源配置不当调整 requests/limits设置为实际需求的 50%-80%
调度约束问题检查 nodeSelector 等确保无多余限制

🔮 未来趋势与总结

未来,随着 Kubernetes 调度器的智能化升级,我们可以期待更高效的资源管理和更灵活的调度策略。此外,云原生领域的 弹性扩展能力 将更加完善,为开发者提供更加便捷的体验。

想要获取更多最新AI云原生资讯,欢迎点击文末加入猫头虎AI共创社群!

猫头虎


👉 更多信息:有任何疑问或者需要进一步探讨的内容,欢迎点击文末名片获取更多信息。我是猫头虎博主,期待与您的交流! 🦉💬
猫头虎


联系我与版权声明 📩

  • 联系方式:
    • 微信: Libin9iOak
    • 公众号: 猫头虎技术团队
  • 版权声明:
    本文为原创文章,版权归作者所有。未经许可,禁止转载。更多内容请访问猫头虎的博客首页。

点击✨⬇️下方名片⬇️✨,加入猫头虎AI共创社群矩阵。一起探索科技的未来,共同成长。🚀

All-in-One 模式安装 KubeSphere 异常问题记录 环境 腾讯云2核4g服务器 官方文档 https://kubesphere.io/zh/docs/quick-start/all-in-one-on-linux/ 安装步骤: 修改主机名(坑:名称不能大小字母开始,不能有下划线,否则后续安装出错): hostnamectl set-hostname master 安装conntrack: yum install -y conntrack 安装KubeKey: export KKZONE=cn curl -sfL https://get-kk. 阅读详情

相关推荐

Kubernetes 为 Namespace 配置pod、CPU和内存配额

Kubernetes 为 Namespace 配置Pod配额 前面namespace中说到,Namespace是一种将集群资源划分为多个用途(通过 resource quota)的方法。在k8s上准入控制器的模块有很多,其中比较常用的有LimitRanger、ResourceQuota、ServiceAccount、PodSecurityPolicy等等,对于前面三种准入控制器系统默认是启用的,我们只需要定义对应的规则即可 实验: 1.创建namespace.yaml文件创建namespace apiVer

weixin_47678667的博客 2443

Kubenets——0/3 nodes are available: 1 Insufficient cpu, 2 node(s) didn‘t match Pod‘s node affinity...

就是 cpu 不足导致的问题。用的是 kubesphere 可视化界面,我需要部署的 pod 只需要 4 cpu,看下图剩余的 cpu 明显够,但一部署就报错。在 Linux 中查看实际剩余的 cpu我要部署的 pod 指定部署到 njoffice04 这个点,看到已用了44987m (94%),机器是 48 核的,也就是 48000m。那现在就只剩下 3013m,小于我现在要部署的 pod 需要的 4000m,所以会报错。

我的博客 4169

Pod无法调度到可用的节点上(K8s)

在单节点环境中,将节点标记为控制平面节点是有利的,因为这样可以确保该节点只用于运行控制平面组件(如API服务器、控制器管理器、Scheduler等),从而确保单节点环境的基本功能正常。因此,在单节点环境中使用这种设置需要谨慎考虑其利弊和潜在风险。在生产环境中,建议使用更复杂的集群设置,例如具有多个节点和多个控制平面组件的集群。这意味着,Kubernetes调度器将不会将任何新的Pod调度到这个节点上。提供的污点信息中,可以看到有一个污点被添加到了节点。#pod状态变为Running ,报错解决完成。

qq_70531838的博客 8655

kuernetes 资源对象分析报错

所以,当无法在外部访问到 Pod 的业务服务时,我们可以先从最内层也就是 Pod 开始检查,最简单的方式就是直连 Pod 并发起请求,查看 Pod 是否能够正常工作。在生产环境下,我们一般会用 Deoloyment 工作负载来管理 Pod,在 Pod 出现运行阶段异常的情况下,Pod 名称会随着重新启动而出现变化,这时候你可以在查看日志时增加。对于运行阶段的错误,大部分错误都来源于业务本身的启动阶段,所以,我们只需要查看 Pod 的日志一般就能够找到问题所在。的异常,这样我们也就定位到了具体的错误。

爱死亡机器人 1416

【云原生技术】K8S报错 “0/1 nodes are available: 1 node(s) didn‘t match pod anti-affinity rules. preemption:

要解决 “0/1 nodes are available: 1 node(s) didn’t match pod anti-affinity rules. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod.” 的问题,需要对 Kubernetes 集群进行一些检查和可能的调整。

weixin_46453070的博客 4285

0/5 nodes are available: 5 Insufficient cpu.

是因为集群中的CPU资源不够部署当前pod(nodejs 8 cpus)导致的。注意这边计算的公式是总CPU - Request CPU查看 每个node 的CPU 和Request CPU 可以用以下命令总CPU已申请CPU本问题中为什么会有78%的CPU已被申请,主要是因为以下几个pod点用的而这几个pod 错误的状态(如下图),导致没法回收CPU ,所以导致无法分配。

山巅 6425

2020-10-21 0/1 nodes are available: 1 Insufficient nvidia.com/gpu

https://github.com/NVIDIA/k8s-device-plugin/issues/33 https://github.com/NVIDIA/k8s-device-plugin

Liu Wj的博客 7518

解决fetch_california_housing数据集403错误的3种实用方法(附手动下载地址)

本文针对机器学习中常见的fetch_california_housing数据集403 Forbidden错误,提供了三种实用的解决方案。从理解HTTP 403错误的根源出发,详细介绍了修改源码路径、使用国内镜像源以及手动下载并配置数据文件这三种方法,并附带了可靠的手动下载地址,帮助开发者彻底解决数据加载障碍,确保机器学习项目顺利进行。

weixin_29062963的博客 559

0/1 nodes are available: 1 Insufficient nvidia.com/gpu

最近用k8s pod调用gpu,遇到了这个问题: 0/1 nodes are available: 1 Insufficient nvidia.com/gpu 后来发现是gpu资源被其他pod占用了,删掉那个pod之后可以了。 所以要检查gpu资源够不够,有没有被占用。

weixin_39133753的博客 5263

西安交通大学SQ轴承数据集(文末附数据)

西安交通大学SQ轴承数据集

qq_43271683的博客 1万+

因果推断综述-A Survey on Causal Inference

最近读到一篇讲述很全面的综述文献-《A Survey on Causal Inference》,对于接触因果推断不久的同学而言是特别详细的介绍和科普。文献很长,我会分成几部分介绍。 目录 摘要 第一部分:简介 第二部分:因果推断基础知识 第三部分:基于三种假设的因果推断方法 第四部分:实验 第五部分:应用 摘要 几十年来,因果推理是一个跨许多领域的关键研究主题,如统计、计算机科学、教育、公共政策和经济学。与随机对照试验相比,研究方向由于可用数据量大且预算要求低,如今,从观测数据..

海边凝望的博客 3182

kubesphere all in one部署Jenkins提示1 Insufficient cpu

将工作负载里边占用cpu比较多的,修改yaml文件,将limits和requests改小,注意limits不能小于requests的值。看到红框,上面的框是可以使用的cpu3600m,下面是统计的已经使用的,这个是启动Jenkins后的截图。devops 至少一个cpu(1000m),但是其他资源已经占用了很多cpu。

jian436的专栏 1078

【Web实战】微信小程序逆向

2E 70 6E 67”为带存放路径的文件名称,“00 00 11 7C”对应文件在小程序包中的具体偏移位置,“00 01 01 F7“对应文件在小程序包中的数据长度。但这并不是最初的原项目文件结构,原因是微信服务器会将小程序源码中所有的“js”文件压入“app-service.js”文件中,将所有的“json”文件压入“app-config.json”中,将所有的“wxml”文件压入“page-frame.html”文件中,“wxss”则在处理之后以“html”文件的形式存留在对应页面目录之下。

若有战,召必回 1943

0/1 nodes are available: 1 node(s) didn‘t match Pod‘s node affinity.

这个错误消息表明您正在尝试在不符合Pod的节点亲和性规则的节点上运行Pod。主要是需要确认你的yaml文件中是否有nodeSelector的配置,一般是因为k8s集群中没有相应的node节点匹配导致。如果您的集群正在使用节点亲和性和反亲和性,请确保它们没有相互冲突。检查Pod定义中的节点亲和性规则是否正确。如果您正在使用节点亲和性规则,请确保它们与集群中的节点匹配。检查您的节点是否正确标记。如果您的节点没有正确标记,则可能会导致Pod无法在节点上运行。确保节点具有正确的标签和注释,并且符合节点亲和性规则。

cainiao1412的博客 1万+

2023年全国职业院校技能大赛 网络系统管理服务模块 Linux部分讲解

网络系统管理,Linux,服务部署,Chinaskills,2023国赛

weixin_62926639的博客 1545

STM32串口控制LED灯的亮灭

STM32中的串口控制LED灯的亮灭,分为两种方式,一种是直接发送数字0和1来控制灯的亮灭,另一种是通过发送字符串来控制。 我所使用的开发板主控芯片是STM32F401RET6,主频84MHz, 首先要进行串口的初始化: /* 函数功能:串口的初始化 函数名:Usart_Init 返回值:无 参数:u32 brr 备注: USART1_TXD->PA9 USART1_RXD->PA10 */ void Usart_Init(u32 brr) { float div; u16 div

博客 2万+

K8S常见问题汇总

要彻底不让 Pod 再运行在 master 节点上,你可以通过以下几种方式来实现。推荐使用的是 给 master 节点打 taint,并确保 Pod 不会设置容忍(toleration)去匹配这个 taint。有一个节点是 master,并且带有 taint node-role.kubernetes.io/master:NoSchedule,但 Pod 没有 toleration,所以不能调度过去。这条命令的意思是:不允许任何没有明确容忍该 taint 的 Pod 调度到 master 节点上。

王一横的个人博客 1709

【气候模式降尺度】分位数增量映射(QDM)原理及MATLAB代码实现

简介QDM原理及其MATLAB代码实现

WW、forever的博客 5859

1 Insufficient cpu, 1 node(s) had taints that the pod didn't tolerate.

1 Insufficient cpu, 1 node(s) had taints that the pod didn't tolerate. 节点性能不足了,增加节点试试

wangchao_cn的专栏 6828

YOLOv13零基础手把手教程:在 YOLOv13 中集成 SFSConv,YOLOv13让目标检测更上一层楼

YOLOv13本教程详细介绍了如何在YOLOv13中集成SFSConv模块以提升目标检测性能。YOLOv13 SFSConv创新性地结合了分数伽柏滤波和分数傅里叶变换,通过空间处理单元(SPU)和频率处理单元(FPU)解耦处理特征。实验表明,该模块可使准确率提升5.21%,mAP提高11.45%。教程从原理分析到代码实现,系统讲解了SFSConv的数学基础、模块设计,并提供了在YOLOv13中集成该模块的详细步骤,包括配置文件修改、核心代码实现等。

FJN110的博客 2175

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

0/3 nodes are available: 1 Insufficient memory, 2 node(s) didn‘t match pod affinity/anti-affinity,

Node(s) didn’t satisfy existing pods anti-affinity rules:已有的 Pod 的反亲和性规则与当前可用节点不匹配,无法调度新的 Pod。你需要检查 Pod 的亲和性或反亲和性规则,以及节点的标签,确保它们之间匹配。你需要检查节点的内存使用情况,可能需要增加节点的内存容量或者释放节点上的一些资源。如果以上方法都无法解决问题,可以考虑增加节点的数量,以增加可用资源,或者调整 Pod 的资源要求,以适应当前可用资源。

喝醉酒的小白 5936

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn‘t

问题描述:在单机版k8s上部署应用后,发现Pod的状态一直处于pending状态, 于是 kubectl describe pods 查看了下发现: Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 10m default-sch

weixin_43114954的博客 2万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

故障排查:k8s内存不足(0 nodes are available:Insufficient memory)

k8s对象的requests资源之和不能超过集群可用资源的总量,否则会诱发报错。

农民工老王的博客 4万+

生产阿里云容器服务-kubernetes集群资源不足报错nodes are available: 2 Insufficient cpu

报错信息 : nodes are available: 2 Insufficient cpu 问题描述 : 容器集群kubernetes,在edas上面做配置修改发布一直是执行状态,去到容器服务kubernetes上面查看报错nodes are available: 2 Insufficient cpu 检查之后发现是因为节点上的CPU资源不足Pod调度了,Pod的所需资源就是Pod的request值,节点上剩余request的值不能满足Pod的所需资源的话,就不再能够调度。 最后降低一些pod的所需

at1358的博客 2652

Warning FailedScheduling 8s default-scheduler 0/3 nodes are available: 1 Insufficient memory

默认调度程序0/3个节点可用1个内存不足,1个节点具有pod无法容忍的污点{node.kubernetes.io/not-ready},1个节点具有卷节点亲和力冲突。

喝醉酒的小白 7348

too many pod 节点pod总数超出限制

在/etc/kubernetes/kubelet.env中增加fail-swap-on=false --max-pods=20。可以判断也是pod数量过多导致的。describe pod xxxx查看,只有下面的信息,并没有。pod调度失败,显示某个节点 too many pod。集群中存在大量的pod处于Pending状态,查看。重启kubelet服务,再次查看节点可容纳数量。

ss810540895的博客 805
上一篇: 猫头虎分享云原生疑难杂Bug ContainerStartError: failed to start container “Libin9iOak-container”: unable to find
下一篇: 猫头虎分享云原生疑难杂Bug :PersistentVolumeClaim is not bound: timed out waiting for the condition. 解决方案
AI云原生
博客等级 码龄3年 1万+粉丝 216原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值