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

Kubernetes节点无法扩容,Pod长期处于Pending状态求助排查

排查GKE集群Job Pod Pending+幽灵节点异常问题

嘿,针对你遇到的这个GKE集群的异常状况,我结合你给出的信息整理了一套排查和修复思路,咱们一步步来:

问题背景

你遇到的情况是:在GKE集群(节点版本1.10.2-gke.1,节点池配置min size:0 max size:2 total cores: 16CPU total memory: 30GB)中创建新Job时,Pod始终卡在Pending状态;从截图来看,集群层面显示有1个节点在运行,但在Nodes列表里却找不到该节点,同时Job对应的Pod一直处于Pending状态。

第一步:确认"幽灵节点"的真实状态

这种集群显示存在节点但列表看不到的情况,大概率是节点处于失联/NotReady但未被自动清理的状态,或是节点池自动扩缩容出现了同步异常。你可以通过以下命令排查:

  • 查看集群所有节点的详细状态(包括可能被标记为Terminating的隐藏节点):
    kubectl get nodes -o wide --show-all
    
  • 查看GKE节点池的事件和状态,确认是否有扩容/缩容失败的记录:
    gcloud container node-pools describe <你的节点池名称> --cluster <集群名称> --zone <集群所在区域>
    

第二步:排查Pod Pending的根因

Pod一直Pending通常是调度失败,结合幽灵节点的情况,可能的核心原因有两个:

  1. 调度器绑定了已失联的节点:调度器缓存里还认为那个"幽灵节点"可用,把Pod调度过去,但实际节点已经不在集群中了。你可以查看Pod的调度事件确认:
    kubectl describe pod <你的Pod名称>
    
    重点看Events部分,如果出现Successfully assigned <Pod名称> to <节点名称>,但这个节点在kubectl get nodes里找不到,那就是这个问题。
  2. 节点池扩缩容异常:你的节点池min设为0,max设为2,可能扩容时节点创建失败,但集群状态没同步;或者缩容时节点被删除,但调度器缓存没更新。你可以去GCP控制台的Cloud Logging里搜索container.googleapis.com/operation,查看有没有节点创建/删除失败的日志记录。

第三步:针对性修复方案

根据上面排查出的原因,给出对应的修复步骤:

  • 如果是调度器绑定了幽灵节点:
    1. 先删除这个Pending的Pod,让Job自动重新创建新的Pod:
      kubectl delete pod <你的Pod名称>
      
    2. 如果kubectl get nodes --show-all能看到这个幽灵节点,强制清理它:
      kubectl delete node <幽灵节点名称> --force --grace-period=0
      
  • 如果是节点池扩缩容异常:
    1. 手动触发一次节点池的缩容再扩容,强制同步集群状态:
      gcloud container clusters resize <集群名称> --node-pool <节点池名称> --size 0 --zone <集群所在区域>
      gcloud container clusters resize <集群名称> --node-pool <节点池名称> --size 2 --zone <集群所在区域>
      
    2. 等GCP控制台显示节点池节点正常创建后,再重新提交你的Job。

额外建议

你的集群节点版本是1.10.2-gke.1,这个版本非常老旧(GKE 1.10早在2019年就停止官方支持了),很多调度器、节点池同步的已知bug在新版本里已经被修复。如果上述临时修复后问题反复出现,建议尽快把集群升级到GCP当前受支持的稳定版本(比如1.24及以上),从根源上避免这类异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:47:40