如何使用kubectl总结Kubernetes中的所有资源限制和请求?

如何使用kubectl总结Kubernetes中的所有资源限制和请求?,kubernetes,kubectl,jsonpath,Kubernetes,Kubectl,Jsonpath,我开始使用它,并注意到当节点内的吊舱限制高于实际容量时,它会给您一些警告。 因此,我试图通过kubectl获得这些信息,但我对jsonpath还不熟悉,我只是通过以下方式获得了原始信息: kubectl get pods-o=jsonpath='{.items..resources.limits}'-A 这就产生了这样的结果: {“cpu”:“200m”,“内存”:“1Gi”}{“cpu”:“200m”,“内存”:“1Gi”}{“cpu”:“200m”,“内存”:“512Mi”}{“cpu”

我开始使用它,并注意到当节点内的吊舱限制高于实际容量时,它会给您一些警告。

因此,我试图通过kubectl获得这些信息,但我对jsonpath还不熟悉,我只是通过以下方式获得了原始信息:

kubectl get pods-o=jsonpath='{.items..resources.limits}'-A
这就产生了这样的结果:

{“cpu”:“200m”,“内存”:“1Gi”}{“cpu”:“200m”,“内存”:“1Gi”}{“cpu”:“200m”,“内存”:“512Mi”}{“cpu”:“500m”,“内存”:“250Mi”}{“内存”:“170Mi”}{“内存”:“170Mi”}{“cpu”:“2”,“内存”:“2Gi”}{“cpu”:“2”,“内存”:“2Gi”}{“cpu”:“2”,“内存”:“2Gi”}{“cpu”:“2”,“内存”:“2Gi”}{“cpu”:“1”、“内存”:“1Gi”}“cpu”:“1Gi”{“cpu”:“1Gi”{“内存”:“1Gi”},“内存”:“128Mi”}{“cpu”:“100m”,“内存”:“128Mi”}{“cpu”:“500m”,“内存”:“600Mi”}{“cpu”:“1”,“内存”:“1Gi”}{“cpu”:“100m”,“内存”:“25Mi”}{“cpu”:“100m”,“内存”:“25Mi”}

因此,我的问题是,我如何计算所有这些值?这些值是否准确,或者我是否遗漏了任何其他查询?我已经使用LimitRange进行了检查,得到的值似乎是正确的,结果包括LimitRange配置设置的限值。

不幸的是,使用
kubectl
完全是

但是,您可以考虑使用:

  • :
  • 返回数字数组的算术和

  • :
  • 我们将介绍监视资源(CPU)数量所需的步骤 (或内存)Kubernetes吊舱正在使用。因此,我们将了解:

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

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

    或者:

    节点CPU请求/限制是所有节点的CPU请求/限制的总和 在该节点上运行的POD。类似地,节点内存请求/限制 所有POD的内存请求/限制的总和

  • :
  • kube state metrics是一个侦听Kubernetes的简单服务 API服务器并生成有关对象状态的度量。(请参阅 下面的度量部分中的示例。)它不关注 单个Kubernetes组件的运行状况,但在 内部各种对象的运行状况,例如部署、节点和 豆荚


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

    下面的shell脚本将输出所有名称空间中所有POD的总CPU限制(单位
    m
    units)

    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请求、内存请求和限制值