簡體   English   中英

Kubernetes Rest API 節點 CPU 和 RAM 使用率百分比

[英]Kubernetes Rest API node CPU and RAM usage in percentage

我想開發一個簡單的 web 服務,它返回 kubernetes 指標,如節點/pod CPU 和 RAM 使用率的百分比。 在 CLI 中有kubectl top nodekubectl describe node類的命令,其中包含我需要的所有指標。 但是,我無法在 kubernetes REST api 端點中找到此類指標。 我得到的最接近的是/apis/metrics.k8s.io/v1beta1/nodes端點,它顯示 CPU 和 RAM 使用率,但沒有百分比。

是否有這樣一個端點可以顯示與topdescribe命令中相同的信息,或者,也許有比metrics.k8s.io插件更好的方法。

當您發出kubectl top node ,kubectl 會向多個端點發出多個 HTTP 請求。 您可以通過向kubectl添加--v=9標志來查看確切的端點。

例如,就我而言

kubectl top node gke-cluster-1-default-pool-99238d56-bv6z --v=9
[...]
I0726 10:41:18.347144    1986 round_trippers.go:435] curl -k -v -XGET  -H "Accept: application/json, */*" -H "User-Agent: kubectl/v1.21.0 (linux/amd64) kubernetes/cb303e6" 'https://<ip-address>/apis/metrics.k8s.io/v1beta1/nodes/gke-cluster-1-default-pool-99238d56-bv6z'
I0726 10:41:18.489068    1986 round_trippers.go:435] curl -k -v -XGET  -H "Accept: application/json, */*" -H "User-Agent: kubectl/v1.21.0 (linux/amd64) kubernetes/cb303e6" 'https://<ip-address>/api/v1/nodes/gke-cluster-1-default-pool-99238d56-bv6z'
[...]

(還有很多,這兩個對於回答您的問題很重要)

第一次請求返回

{
    "kind":"NodeMetrics",
    "apiVersion":"metrics.k8s.io/v1beta1",
    "metadata":{
        "name":"gke-cluster-1-default-pool-99238d56-bv6z",
        "selfLink":"/apis/metrics.k8s.io/v1beta1/nodes/gke-cluster-1-default-pool-99238d56-bv6z",
        "creationTimestamp":"2021-07-26T08:41:19Z"
    },
    "timestamp":"2021-07-26T08:41:07Z",
    "window":"30s",
    "usage":{
        "cpu":"86855567n",
        "memory":"950228Ki"
    }
}

.usage.cpu.usage.memory分別顯示使用的 CPU 和內存。

第二個請求返回(截斷,響應巨大)

{
    "status":{
        "capacity":{
            "attachable-volumes-gce-pd":"15",
            "cpu":"2",
            "ephemeral-storage":"98868448Ki",
            "hugepages-1Gi":"0",
            "hugepages-2Mi":"0",
            "memory":"4031624Ki",
            "pods":"110"
        },
        "allocatable":{
            "attachable-volumes-gce-pd":"15",
            "cpu":"940m",
            "ephemeral-storage":"47093746742",
            "hugepages-1Gi":"0",
            "hugepages-2Mi":"0",
            "memory":"2885768Ki",
            "pods":"110"
        }
    }
}

.status.allocatable.cpu.status.allocatable.memory顯示可以分配多少 CPU 和內存給正在運行的 pod。


如您所見,沒有以百分比形式返回使用率的端點,kubectl 會即時進行計算,以人類友好的格式輸出結果

$ kubectl top node gke-cluster-1-default-pool-99238d56-bv6z
NAME                                       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
gke-cluster-1-default-pool-99238d56-bv6z   108m         11%    928Mi           32%

我建議您使用官方 Kubernetes 客戶端庫。 在那里您可以實現 kubectl 上可用的所有功能。 您可以使用以下代碼片段實現 kubectl top 命令

[https://github.com/kubernetes-client/javascript/blob/master/examples/top.js][1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM