簡體   English   中英

如何使用JAVA客戶端獲取kubenetes集群的內存CPU等指標

[英]How to get kubenetes cluster's metrics such as Memory CPU and so on using JAVA client

我使用Kubernetes的官方java客戶端來請求集群的資源,如Pods、Deployment等。

但不幸的是,我發現似乎沒有 API 來請求集群指標,例如所有 pod 使用的總 CPU 和內存。

您知道如何使用 Java 客戶端獲取集群指標嗎?

謝謝!

指標服務器部署到集群。

然后,您將有權查詢podsnodesmetrics.k8s.io/v1beta1 API 作為普通 kubernetes 資源。 您應該能夠運行kubectl top pod進行測試。

我看不出官方 Java 客戶端無法發現這些資源的任何原因,但如果發現了這些資源,它們可以在以下 URL 中找到

https://api-server/apis/metrics.k8s.io/v1beta1/pods
https://api-server/apis/metrics.k8s.io/v1beta1/nodes

認為您將無法使用官方 Java 客戶端進行此操作。

取而代之的是,您可以設置prometheus ,將其配置為抓取指標並使用Prometheus HTTP API以 JSON 格式獲取 API 響應。

我使用 kubectl top api 獲取每個節點的資源消耗,並將它們相加。

import static io.kubernetes.client.extended.kubectl.Kubectl.top;
import io.kubernetes.client.custom.NodeMetrics;
import io.kubernetes.client.openapi.models.V1Node;
import org.apache.commons.lang3.tuple.Pair;

List<Pair<V1Node, NodeMetrics>> nodesMetrics = top(V1Node.class, NodeMetrics.class).apiClient(client).metric("cpu").execute();

Maven 依賴:

    <dependency>
        <groupId>io.kubernetes</groupId>
        <artifactId>client-java</artifactId>
        <version>10.0.1</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>io.kubernetes</groupId>
        <artifactId>client-java-extended</artifactId>
        <version>10.0.1</version>
    </dependency>

暫無
暫無

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

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