You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes集群Pod调度失败求助:污点与节点亲和性不匹配

解决方案

1. 导出崩溃Pod的配置信息(替代缺失的.yaml文件)

因为没有应用的原始部署文件,先从集群中提取崩溃Pod的完整配置:

  • 获取崩溃Pod名称:kubectl get pods --all-namespaces | grep -E "CrashLoopBackOff|Error"(根据实际状态筛选)
  • 导出Pod的完整YAML配置:kubectl get pod <pod-name> -n <namespace> -o yaml > pod-config.yaml
  • 查看Pod的亲和性/选择器规则:kubectl describe pod <pod-name> -n <namespace> | grep -A 10 "Node Affinity" -A 10 "Node Selector"

2. 解决k8sc2m1节点的磁盘压力污点问题

2.1 清理节点磁盘空间(推荐)

ssh登录到k8sc2m1节点,执行以下操作释放磁盘:

  • 清理未使用的容器镜像(根据容器 runtime 选择):
    • Docker:docker system prune -a -f(清理所有未使用的镜像、容器、卷)
    • Containerd:crictl rmi --prune
  • 清理系统日志:journalctl --vacuum-time=7d(保留最近7天日志)
  • 删除临时文件:rm -rf /tmp/* /var/tmp/*
  • 检查磁盘使用情况:df -h,确认空间已释放

清理完成后,kubelet会自动移除node.kubernetes.io/disk-pressure污点,等待5-10分钟后用kubectl describe node k8sc2m1 | grep Taints验证。

2.2 手动临时移除污点(应急方案)

如果清理后污点未自动消失,可手动移除:

kubectl taint nodes k8sc2m1 node.kubernetes.io/disk-pressure-

3. 解决k8sc2m2/k8sc2m3的亲和性不匹配问题

从步骤1导出的Pod配置中,找到nodeSelector或nodeAffinity的规则,例如:

nodeSelector:
disk-type: ssd

给k8sc2m2和k8sc2m3添加对应的节点标签:

kubectl label nodes k8sc2m2 disk-type=ssd
kubectl label nodes k8sc2m3 disk-type=ssd

如果是节点亲和性(nodeAffinity)规则,比如要求节点有特定标签且满足条件,同样给目标节点添加对应标签即可。

4. 应急调度方案(临时绕过限制)

如果以上操作需要时间,可临时修改Pod配置添加容忍污点,让Pod先调度到k8sc2m1:

  1. 编辑Pod配置:kubectl edit pod <pod-name> -n <namespace>
  2. 在spec下添加容忍配置:
tolerations:
- key: "node.kubernetes.io/disk-pressure"
  operator: "Exists"
  effect: "NoSchedule"
  1. 保存退出后,Pod会重新调度。注意这只是临时方案,必须尽快解决磁盘压力问题。

内容的提问来源于stack exchange,提问作者Breaking News

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:20:18