【问题标题】:How to get kubenetes cluster's metrics such as Memory CPU and so on using JAVA client如何使用JAVA客户端获取kubernetes集群指标如内存CPU等
【发布时间】:2020-05-23 09:58:47
【问题描述】:

我正在使用Kubernetes的official java client请求集群的Pods、Deployment等资源。

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

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

谢谢!

【问题讨论】:

    标签: java kubernetes metrics


    【解决方案1】:

    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】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-04-16
          • 1970-01-01
          • 2021-09-15
          • 2019-08-15
          • 2023-01-19
          • 2016-01-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多