繁体   English   中英

我如何使用 kubectl 汇总 Kube.netes 中的所有资源限制和请求?

[英]How can I summarize all the resource limits and requests in Kubernetes with kubectl?

我开始使用Lens并注意到当节点内的 pod 的限制高于实际容量时,它会向您发出一些警告。 来自 Lens 的图形可视化,您可以在其中看到一条警告,告知指定的限制高于节点容量

所以我尝试使用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 插件列出/排序具有 cpu 限制的 pod:

kubectl resource-capacity --sort cpu.limit --util --pods

https://github.com/robscott/kube-capacity

不幸的是,仅使用kubectl是不可能的。

但是,您可以例如考虑使用:

  1. JSON $sum() function

返回数字数组的算术和。

  1. Metrics-server、Grafana 和 Prometheus

我们将逐步完成监控 Kubernetes pod 正在使用多少资源(CPU 或内存)的必要步骤。 因此,我们将看看:

  • CPU 请求/限制/实际使用/节流

  • Memory 请求/限制/实际使用/终止

或者监控 Kubernetes 节点 CPU 和 Memory 请求/限制

节点 CPU 请求/限制是该节点上运行的所有 pod 的 CPU 请求/限制的总和。 同样,节点 memory 请求/限制是所有 pod 的 memory 请求/限制的总和

  1. kube-state-metrics

kube-state-metrics 是一个简单的服务,它侦听 Kubernetes API 服务器并生成有关对象的 state 的指标。 (请参阅下面“指标”部分中的示例。)它不关注单个 Kubernetes 组件的健康状况,而是关注内部各种对象的健康状况,例如部署、节点和 Pod。

仅使用kubectl命令是不可能的。 但是,您可以使用 kubectl 的kubectl并编写基本的 shell 脚本来计算总值。

以下 shell 脚本将 output 所有命名空间中所有 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 请求和 memory 请求和限制值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM