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

kubectl系列(十二):查询pod的resource 配置

在 Kubernetes 中,可以通过 kubectl 命令快速查询 Pod 的资源请求(requests)和限制(limits)配置。以下是多种方法实现这一目标:

1. 查看 Pod 的资源请求和限制(基础版)

使用 kubectl describe 直接查看 Pod 的详细信息:

kubectl describe pod <pod-name> -n <namespace>

在输出中找到 Containers 部分,例如:

Containers:nginx:Image:      nginx:alpineLimits:cpu:     1memory:  512MiRequests:cpu:      500mmemory:   256Mi

2. 使用自定义列显示资源信息

通过 kubectl get pod 的 --custom-columns 参数生成表格:

kubectl get pods -n <namespace> \--custom-columns="NAME:.metadata.name,CPU-REQUEST:.spec.containers[*].resources.requests.cpu,CPU-LIMIT:.spec.containers[*].resources.limits.cpu,MEMORY-REQUEST:.spec.containers[*].resources.requests.memory,MEMORY-LIMIT:.spec.containers[*].resources.limits.memory"

输出示例

NAME          CPU-REQUEST   CPU-LIMIT   MEMORY-REQUEST   MEMORY-LIMIT
nginx-pod     500m          1           256Mi            512Mi

3. 通过 JSONPath 提取资源信息

使用 kubectl 结合 JSONPath 过滤关键字段:

kubectl get pod <pod-name> -n <namespace> -o jsonpath='{range .spec.containers[*]}{"Container: "}{.name}{"\nRequests: "}{.resources.requests}{"\nLimits: "}{.resources.limits}{"\n"}{end}'

输出示例

Container: nginx
Requests: map[cpu:500m memory:256Mi]
Limits: map[cpu:1 memory:512Mi]

4. 查看 YAML 格式的完整资源配置

获取 Pod 的 YAML 定义并过滤 resources 字段:

kubectl get pod <pod-name> -n <namespace> -o yaml | grep -A 5 resources

输出示例

    resources:limits:cpu: "1"memory: 512Mirequests:cpu: 500mmemory: 256Mi

5. 批量导出所有 Pod 的资源配置

生成 CSV 报告:

kubectl get pods -n <namespace> -o jsonpath='{range .items[*]}{.metadata.name}{","}{.spec.containers[*].resources.requests.cpu}{","}{.spec.containers[*].resources.limits.cpu}{","}{.spec.containers[*].resources.requests.memory}{","}{.spec.containers[*].resources.limits.memory}{"\n"}{end}' > pod-resources.csv

文件内容示例

nginx-pod,500m,1,256Mi,512Mi
redis-pod,100m,200m,128Mi,256Mi

6. 结合 jq 工具高级过滤

安装 jq 后解析 JSON 输出:

kubectl get pod <pod-name> -n <namespace> -o json | jq '.spec.containers[] | {name: .name, requests: .resources.requests, limits: .resources.limits}'

输出示例

{"name": "nginx","requests": {"cpu": "500m","memory": "256Mi"},"limits": {"cpu": "1","memory": "512Mi"}
}

常见问题排查

Q1:资源字段为空
  • 原因:Pod 未设置 requests/limits

  • 解决:检查 Deployment 或 Pod 定义是否遗漏资源配置。

Q2:单位混淆
  • CPU1 = 1 核,500m = 0.5 核。

  • 内存1Gi = 1024Mi,1G = 1000MB(注意单位区分)。

Q3:资源配额冲突

若 Pod 因资源不足无法调度,检查命名空间的 ResourceQuota

kubectl describe resourcequota -n <namespace>

总结

方法场景优点缺点
kubectl describe快速查看单个 Pod 详情无需记忆复杂命令信息冗余,需手动筛选
自定义列批量生成清晰表格适合导出和分享需记忆列定义
JSONPath + jq高级过滤和结构化输出灵活,适合自动化处理依赖 jq 工具

根据需求选择合适的方法,快速定位资源瓶颈!

相关文章:

  • C++编程中,什么是野指针?
  • Linux系统编程之消息队列
  • 关于TIAV20 PLCSIM仿真错误的原因
  • ST表(稀疏表)
  • Unity基础学习(十一)核心系统---光源系统基础
  • 机器人运动控制原理浅析-UC Berkeley超视觉模态模型
  • 【Python 算法零基础 2.模拟 ⑤ 基于栈和队列】
  • 【递归、搜索与回溯算法】导论
  • java加强 -List集合
  • 应急响应基础模拟靶机-security2
  • 御网杯2025 Web,Msic,密码 WP
  • 深入解析多选字段的存储与查询:从位运算到数据库设计的最佳实践
  • uni-app学习笔记(二)--vue页面代码的构成和新建页面
  • html body 设置heigth 100%,body内元素设置margin-top出滚动条(margin 重叠问题)
  • [学习]RTKLib详解:convkml.c、convrnx.c与geoid.c
  • 二、transformers基础组件之Tokenizer
  • 智能座舱开发工程师面试题
  • vue中理解MVVM
  • Ubuntu 22虚拟机【网络故障】快速解决指南
  • Qt坐标系 + 信号和槽 + connect函数(8)
  • 国务院关税税则委员会公布公告调整对原产于美国的进口商品加征关税措施
  • 欧元区财长会讨论国际形势及应对美国关税政策
  • 铁路部门:确保沿线群众安全,焦柳铁路6个区段将陆续安装防护栅栏
  • 牟海松任国家信访局副局长
  • 时代中国控股:前4个月销售额18.1亿元,境外债重组协议押后聆讯至5月底
  • 4月金融数据前瞻:受去年低基数因素影响,社融增量有望同比大幅多增