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

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 工具

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

http://www.xdnf.cn/news/5421.html

相关文章:

  • Java定时任务
  • Cribl 利用CSV 对IP->hostname 的转换
  • tokenizer.encode_plus,BERT类模型 和 Sentence-BERT 他们之间的区别与联系
  • 数据结构练习:顺序表题目
  • terraform云上实战(一):执行阿里云云助手命令
  • C++ string初始化、string赋值操作、string拼接操作
  • Celery 在分布式任务调度中的实现原理及 MQ 系统对比
  • GIF图像技术介绍
  • 隐马尔可夫模型(HMM)在彩票预测中的Java实现
  • OpenCV进阶操作:指纹验证、识别
  • 复现MAET的环境问题(自用)
  • Javascript基础语法
  • 【STM32开发】-单片机开发基础(以STM32F407为例)
  • SEO长尾关键词布局优化法则
  • 虚拟内存笔记(三)虚拟内存替换策略与机制
  • 前端项目打包部署流程j
  • 北大闰凯博士:热辐射输运问题蒙特卡罗模拟中的全局最优参考场方法
  • HTOL集成电路老化测试学习总结-20250510
  • Linux : 多线程【线程概念】
  • ssh -T git@github.com 测试失败解决方案:修改hosts文件
  • 计算机基础
  • 深入了解linux系统—— 自定义shell
  • 24、TypeScript:预言家之书——React 19 类型系统
  • MYSQL语句,索引,视图,存储过程,触发器(一)
  • 用 LVGL 打造苹果风格音量滑块:圆润无球,极简优雅
  • TCP/IP 模型每层的封装格式
  • C++ stl中的set、multiset、map、multimap的相关函数用法
  • SQL语句的优化
  • 学习和测试WebApi项目限制客户端ip访问接口(基于中间件)
  • Python httpx库终极指南