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

GKE集群Pod资源请求/限制与节点显示不一致问题排查求助

GKE集群资源请求/限制与节点显示不符问题排查与解决

我在GKE集群中发现异常:Pod/Deployment配置的资源请求和限制未被节点正确识别,甚至被错误解析,已经引发大量集群资源分配问题。比如某个Pod配置的CPU请求是50m,但节点视角显示为250m:

Pod配置查看命令及输出

$ kubectl get pod core-worker-6bcf9d4877-5wqpb -n austria -o=jsonpath='{range .spec.containers[*]}{"Container Name: "}{.name}{"\n  Requests:\n    CPU: "}{.resources.requests.cpu}{"\n    Memory: "}{.resources.requests.memory}{"\n  Limits:\n    CPU: "}{.resources.limits.cpu}{"\n    Memory: "}{.resources.limits.memory}{"\n"}{end}'
Container Name: core-worker
  Requests:
    CPU: 50m
    Memory: 256Mi
  Limits:
    CPU:
    Memory: 1Gi

节点视角资源统计片段

$ kubectl describe node $(kubectl get pod core-worker-6bcf9d4877-5wqpb -n austria -o=custom-columns=NODE:.spec.nodeName)
...
Non-terminated Pods:          (12 in total)
  Namespace                   Name                                                     CPU Requests  CPU Limits  Memory Requests  Memory Limits  Age
  ---------                   ----                                                     ------------  ----------  ---------------  -------------  ---
  austria                     core-worker-6bcf9d4877-5wqpb                             250m (26%)    500m (53%)  256Mi (5%)       1Gi (21%)      18m

可能原因

  • 容器数量统计遗漏:如果Pod包含多个容器,节点会汇总所有容器的资源请求总和。不过你的示例里只有一个容器,这条可以排除,但排查时要先确认Pod的完整容器配置。
  • kubelet版本bug:特定版本的kubelet存在资源单位解析或统计逻辑错误,比如把毫核(m)误算成其他单位,或者汇总时出现倍数错误。
  • 容器运行时异常:containerd或docker版本不兼容GKE集群,导致资源请求数值在传递给kubelet时被错误转换。
  • 节点资源预留配置异常:GKE节点池的系统资源预留比例设置错误,导致节点统计Pod资源时叠加了额外的预留值。
  • 自定义调度/优先级组件干扰:如果集群用了自定义调度器或Pod优先级插件,这些组件的逻辑错误可能导致资源统计数值失真。

解决方法

  • 核对Pod完整配置:执行kubectl get pod core-worker-6bcf9d4877-5wqpb -n austria -o yaml,确认Pod里所有容器的资源请求总和是否等于节点显示的数值,排除多容器漏看的情况。
  • 升级/对齐kubelet版本:检查GKE控制平面和节点的kubelet版本是否一致,若不一致或版本较旧,升级到GKE官方推荐的稳定版本(如1.27及以上),修复已知的资源统计bug。
  • 重启节点kubelet:在异常节点上执行sudo systemctl restart kubelet,强制刷新节点的资源统计缓存。
  • 检查节点池资源预留:通过GKE控制台查看节点池的资源预留配置,确认CPU预留比例是否合理,必要时调整或创建新节点池测试。
  • 升级容器运行时:将节点上的containerd/docker升级到GKE对应版本推荐的运行时版本,比如GKE 1.28推荐containerd 1.7.x。
  • 排查自定义组件:暂时禁用自定义调度器或优先级插件,观察资源显示是否恢复正常,逐步定位问题组件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:25:15