如何解决如何使用 kubectl 汇总 Kubernetes 中的所有资源限制和请求?
我开始使用 Lens 并注意到当节点内的 pod 的限制高于实际容量时,它会向您发出一些警告。
所以我尝试使用 kubectl 获取这些信息,但我是 jsonpath 的新手,我只是设法使用这样的方法获取原始信息:
kubectl get pods -o=jsonpath='{.items..resources.limits}' -A
产生这样的结果:
{"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":"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 脚本将输出所有命名空间中所有 Pod 的总 CPU 限制(以 m
为单位)。
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 请求和内存请求以及限制值。
,遗憾的是,仅使用 kubectl
无法做到这一点。
但是,例如,您可以考虑使用:
返回数字数组的算术和。
我们将逐步介绍监控有多少资源(CPU 或内存)Kubernetes pod 正在使用。因此,我们将看看:
-
CPU 请求/限制/实际使用/节流
-
内存请求/限制/实际使用/终止
或者monitor Kubernetes Node CPU and Memory Requests/Limits:
节点 CPU 请求/限制是所有 CPU 请求/限制的总和 在该节点上运行的 pod。同样,节点内存请求/限制是 所有 Pod 的内存请求/限制总和
kube-state-metrics 是一个简单的服务,它监听 Kubernetes API 服务器并生成有关对象状态的指标。 (看 下面的指标部分中的示例。)它不关注 单个 Kubernetes 组件的健康状况,而不是 内部各种对象的健康状况,例如部署、节点和 豆荚。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。