kubernetes - 如何使用 kubectl 总结 Kubernetes 中的所有资源限制和请求?
问题描述
我开始使用Lens,并注意到当节点内的 pod 的限制高于实际容量时,它会给你一些警告。
因此,我尝试使用kubectl获取此信息,但我是jsonpath的新手,我只是设法使用以下方式获取原始信息:
kubectl get pods -o=jsonpath='{.items..resources.limits}' -A
这会产生这样的结果:
{"cpu":"200m","memory":"1Gi"} {"cpu":"200m","memory":"1Gi"} {"cpu":"200m","memory":"512Mi"} {"cpu":"500m","memory":"250Mi"} {"memory":"170Mi"} {"memory":"170Mi"} {"cpu":"2","memory":"2Gi"} {"cpu":"2","memory":"2Gi"} {"cpu":"2","memory":"2Gi"} {"cpu":"1","memory":"1Gi"} {"cpu":"1","memory":"1Gi"} {"cpu":"2","memory":"2Gi"} {"cpu":"100m","memory":"128Mi"} {"cpu":"100m","memory":"128Mi"} {"cpu":"500m","memory":"600Mi"} {"cpu":"1","memory":"1Gi"} {"cpu":"100m","memory":"25Mi"} {"cpu":"100m","memory":"25Mi"}
所以,我的问题是,我怎样才能总结所有这些值?这些值是准确的还是我错过了任何其他查询?我已经使用 LimitRange 进行了检查,我得到的值似乎是正确的,结果包括由 LimitRange 配置设置的限制。
解决方案
kubectl
仅使用命令是不可能的。但是,您可以使用输出kubectl
并编写一个基本的 shell 脚本来计算总值。
以下 shell 脚本将输出m
所有命名空间中所有 pod 的总 CPU 限制(以单位为单位)。
res=$(kubectl get pods -o=jsonpath='{.items[*]..resources.limits.cpu}' -A)
let tot=0
for i in $res
do
if [[ $i =~ "m" ]]; then
i=$(echo $i | sed 's/[^0-9]*//g')
tot=$(( tot + i ))
else
tot=$(( tot + i*1000 ))
fi
done
echo $tot
您可以扩展上述内容以计算 CPU 请求和内存请求以及限制值。
推荐阅读
- python - 如何让 pyautogui 告诉我 locateOnScreen 函数的坐标
- sql - 查找故障之间经过的时间的查询性能问题
- python - 如何在可编辑模式下安装多个 python 命名空间包
- c++ - 在编译时使整数序列唯一
- php - 如何向将在 foreach 中处理的组件发送消息
- git - 有没有办法追溯重命名git中的文件?
- python - 使用 petastorm 将时间序列数据(镶木地板格式)转换为序列的最佳方法是什么?
- c# - 如何从列表中获取数字的总和
- android - 从 jarsigner 迁移到 apksigner
- mapbox - 为什么 Carto 底图比 Mapbox 地图更高效?