如何使用JAVA客户端获取kubenetes集群的指标(例如内存CPU等)

时间:2020-02-07 09:23:04

标签: java kubernetes metrics

我正在使用Kubernetes的official java client来请求集群的资源,例如Pod,Deployment等。

但是不幸的是,我发现似乎没有API可以请求集群指标,例如所有Pod使用的总CPU和内存。

您知道如何使用Java客户端获取集群指标吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

认为您无法使用official java client来做到这一点。

相反,您可以设置prometheus,将其配置为抓取指标,然后使用Prometheus HTTP API获取JSON格式的API响应。

答案 1 :(得分:0)

metrics-server部署到群集。

然后,您可以访问metrics.k8s.io/v1beta1 API,以获取podsnodes作为常规kubernetes资源。您应该可以运行kubectl top pod进行测试。

我看不出任何官方Java客户端无法发现这些资源的原因,但是如果可以,则可以在以下URL上找到它们

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

答案 2 :(得分:0)

我使用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>