当前位置: 首页 > news >正文

0313-Kubernetes 故障实战:FailedScheduling 深度分析与故障注入

一、问题背景

在 Kubernetes 集群中,经常会遇到 Pod 一直处于:

Pending

状态,同时事件中出现:

Warning FailedScheduling

这类问题在生产环境非常常见,属于 Kubernetes 调度层故障。

本质是:

Scheduler 在所有 Node 中找不到一个满足条件的节点运行 Pod


二、典型故障现象

1. Pod 状态

kubectl get pods

示例:

nginx-xxx0/1 Pending

2. 查看调度失败原因

kubectl describe pod nginx-xxx

典型日志:

0/3 nodes are available:3Insufficient memory

或:

node(s)didn't matchnodeselector

或:

pod has unbound immediate PersistentVolumeClaims

三、Kubernetes Scheduler 调度机制

调度流程:

1. Filter(过滤节点) 2. Score(打分) 3. Bind(绑定)

如果在 Filter 阶段所有节点都被过滤掉,就会触发:

FailedScheduling

因此:

FailedScheduling 的本质是没有任何 Node 满足 Pod 运行条件


四、最常见的 FailedScheduling 原因


场景1:资源不足(生产最常见)

日志
Insufficient cpu Insufficient memory
原因

Scheduler 判断依据是:

allocatable - requested

而不是实际 CPU 使用率。

即:

Node CPU 使用率很低,但 requests 设置过高,仍然会调度失败。

故障注入方式
resources:requests:cpu:"50"memory:"100Gi"

在小集群中,所有 Pod 会一直 Pending。

修复方式
  • 降低 requests

  • 扩容 Node

  • 启用 Cluster Autoscaler


场景2:NodeSelector 不匹配

日志
node(s) didn't match node selector
示例

Pod:

nodeSelector:env:prod

Node:

env=dev
故障注入
nodeSelector:impossible:"true"

会导致所有 Pod 调度失败。

修复
  • 修改 Node Label

  • 修改 Selector


场景3:Taint / Toleration 不匹配

日志
node(s) had taint {xxx: NoSchedule}
示例
kubectl taint nodes node1chaos=true:NoSchedule

普通 Pod 没有 toleration 时会全部调度失败。

修复
tolerations:-key:chaosoperator:Exists

场景4:PVC 未绑定

日志
pod has unbound immediate PersistentVolumeClaims
常见原因
  • 没有 PV

  • StorageClass 错误

  • zone 不匹配

  • provisioner 异常

故障注入
storageClassName:not-exist
修复
kubectl get pvc kubectl get storageclass

场景5:Affinity / AntiAffinity 无法满足

日志
node(s) didn't match pod affinity rules
示例

要求:

每个 Pod 必须在不同 Node

但集群只有一个 Node。

故障注入

使用:

requiredDuringSchedulingIgnoredDuringExecution

配置 impossible topology。


五、生产中的 FailedScheduling 原因

Node Pod 数量上限

日志:

Insufficient pods

每个 Node 有:

maxPods

达到后无法调度。


HostPort 冲突

didn't have free ports

Node Pressure

例如:

node.kubernetes.io/disk-pressure

GPU 等特殊资源不足

Insufficient nvidia.com/gpu

六、标准生产排障流程

Step1 查看 Pod 事件

kubectl describe pod

Step2 判断失败类型

  • resource

  • selector

  • taint

  • pvc

  • affinity

Step3 查看 Node

kubectl describenodekubectltopnode

Step4 查看存储

kubectl get pvc

七、总结

FailedScheduling 的本质是:

调度过滤阶段没有留下任何可用 Node

最常见三类原因:

  • 资源不足

  • taint 不匹配

  • 存储未绑定

在真实生产环境中,调度失败通常是多个条件叠加导致。

http://www.jsqmd.com/news/470233/

相关文章:

  • 2026多层电蒸锅哪个品牌的比较好 - 品牌排行榜
  • 2026年好用的电蒸锅推荐:健康烹饪新选择 - 品牌排行榜
  • 2026年什么牌子的养生壶质量好又实惠?真实体验测评 - 品牌排行榜
  • 2026哪个牌子的小型电饭煲好?高口碑型号推荐 - 品牌排行榜
  • 2026年热门的复合包装膜品牌推荐:电子复合包装膜稳定供应商推荐 - 品牌宣传支持者
  • 2026好的手工瓷砖品牌推荐,特色小砖选购参考 - 品牌排行榜
  • 2026佛山有哪些做复古手工砖的工厂?实力厂商盘点 - 品牌排行榜
  • 2026年质量好的隔热罩厂家推荐:隔热罩稳定供应商推荐 - 品牌宣传支持者
  • 2026手工砖哪家好用又实惠?高性价比选择指南 - 品牌排行榜
  • 2026年养生壶最建议买的品牌推荐及选购解析 - 品牌排行榜
  • 2026年热门的温控油冷机工厂推荐:主轴油冷机/CNC工具机油冷机口碑好的厂家推荐 - 品牌宣传支持者
  • 2026护发精油哪个牌子好?热门产品测评与推荐 - 品牌排行榜
  • 2026年好的手工瓷砖品牌有哪些?这份榜单值得参考 - 品牌排行榜
  • 东方博宜OJ 6032:密码强度 ← 字符串
  • 2026最有效的防脱生发精华液怎么选? - 品牌排行榜
  • 2026年好用的护发精油推荐:告别干枯毛躁选对很关键 - 品牌排行榜
  • 2026年推荐一款好用的护发精油,轻盈修护新选择 - 品牌排行榜
  • AI Coding 中的概念 Agentic Coding(智能体编程)简介
  • 2026年抗菌抑菌水刺无纺布工厂推荐:水刺无纺布实力厂家如何选 - 品牌宣传支持者
  • 2026平价护发精油排行榜:高性价比护发好物推荐 - 品牌排行榜
  • Kiro IDE 架构剖析:Spec 驱动开发的技术实现与工程化思考
  • 2026年质量好的600度离心风机公司推荐:高压离心风机/低噪音离心风机长期合作厂家推荐 - 品牌宣传支持者
  • 2026年口碑好的低压铸造工厂推荐:铝合金铸造工厂直供哪家专业 - 品牌宣传支持者
  • 2026年口碑好的侧铣头品牌推荐:万向铣头/非标定制铣头/双向直角铣头生产厂家推荐几家 - 品牌宣传支持者
  • 2026年煤粉燃烧器厂家/锅炉燃烧器厂家最新盘点与推荐:渤洋管道领衔 - 栗子测评
  • 2026光学瞄准镜定制厂家实力解析:高清抗震瞄准镜定制厂家避坑指南 - 栗子测评
  • 钱的教育家庭实施方案:从犹太财商训练到中国特色育儿实践
  • 【AI人工智能第3次课-Python3基础系列之02. Python运算符与条件结构】001篇
  • 技术逆向英语|202602021
  • 【AI人工智能第3次课-Python3基础系列之02. Python运算符与条件结构】002篇