簡體   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