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

Pending状态的Pod是否占用ResourceQuota?及K8s相关代码查找咨询

问题1:处于Pending状态的Pod是否会占用ResourceQuota资源配额?

是的,Pending状态的Pod依然会占用ResourceQuota的资源配额。

ResourceQuota的统计逻辑基于Pod的spec.containers[].resources.requests(若未设置requests则使用limits,两者都未设置则不统计)计算资源占用量,只要Pod对象存在于集群中(未被删除),无论处于Pending、Running还是其他非终止状态,都会被计入命名空间的资源配额使用量。

举个实际场景:如果命名空间CPU配额为1核,你创建了一个请求0.8核的Pod但因无合适节点调度处于Pending状态,此时再创建请求0.3核的Pod会被拒绝——因为Pending Pod已占用了大部分配额,总请求量超出限制。只有当Pending Pod被删除后,对应的配额才会释放。


问题2:如何查找Kubernetes中Pod占用ResourceQuota的相关代码?

Kubernetes的ResourceQuota相关代码集中在几个核心目录,可按以下路径定位:

  1. ResourceQuota控制器核心逻辑
    路径:pkg/controller/resourcequota/resource_quota_controller.go
    这是ResourceQuota控制器的主入口,syncResourceQuota方法触发配额同步计算,其中调用的calculateUsage函数会遍历命名空间内所有资源(包括Pod),统计资源占用量并更新Quota状态。

  2. Pod资源配额评估器
    路径:pkg/quota/pod/pod_quota.go
    这里定义了PodEvaluator并实现了配额系统的Evaluator接口,核心方法包括:

    • Usage: 提取单个Pod的CPU、内存等requests/limits,计算其资源占用量
    • Constraints: 判断Pod的资源请求是否符合Quota限制
      这是Pod与ResourceQuota交互的核心逻辑文件,且不会过滤Pending状态的Pod——只要Pod对象存在就会计算其资源请求。
  3. 通用配额计算框架
    路径:pkg/quota/generic/evaluator.go
    这里实现了通用的资源配额统计逻辑,会调用各类资源的Evaluator(比如PodEvaluator)汇总命名空间内的总资源使用量,是连接控制器与具体资源评估器的中间层。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:17:47