[英]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 客戶端獲取集群指標嗎?
謝謝!
將指標服務器部署到集群。
然后,您將有權查詢pods
和nodes
的metrics.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.