欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > kubectl系列(十二):查询pod的resource 配置

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

2025/5/12 22:07:25 来源:https://blog.csdn.net/ygq13572549874/article/details/147878153  浏览:    关键词: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 工具

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词