如何将kubectl describe nodes输出的CPU、内存请求和限制值统一单位
kubectl describe nodes 资源单位统一方案
kubectl describe nodes 本身没有内置参数支持强制统一CPU、内存的输出单位,可通过以下两种方案实现需求:
方案1:使用自定义输出直接获取最小单位数值
放弃使用kubectl describe解析文本,改用kubectl get的自定义输出功能,直接输出无需换算的最小单位原始值:
- CPU统一返回毫核(m)单位
- 内存统一返回千字节(Ki)单位
示例命令:
# 输出节点的总可分配资源、已分配资源,统一最小单位 kubectl get nodes -o custom-columns=\ 节点名:.metadata.name,\ CPU总可分配:.status.allocatable.cpu,\ 内存总可分配:.status.allocatable.memory,\ CPU已请求:.status.allocatable.cpu,\ 内存已请求:.status.allocatable.memory
如果需要输出节点上每个Pod的资源请求/限制值,也可以针对Pod资源配置对应的custom-columns规则,输出格式规整无多余内容,适合脚本直接解析。
方案2:解析JSON输出自定义换算单位
如果需要统一为指定单位(比如内存统一为Mi、CPU统一为核),可以先输出JSON格式,再通过jq工具做单位换算,示例命令:
# CPU统一转换为毫核数值,内存统一转换为Mi数值 kubectl get nodes -o json | jq '.items[] | { 节点名: .metadata.name, CPU总可分配_m: (.status.allocatable.cpu | if endswith("m") then .[:-1]|tonumber else .|tonumber * 1000 end), 内存总可分配_Mi: (.status.allocatable.memory | rtrimstr("Ki") | tonumber / 1024 | floor) }'
换算后直接输出纯数字,无需额外处理即可给后续脚本使用。
内容的提问来源于stack exchange,提问作者Stephane
相关产品推荐
相关产品推荐

