我正在使用Kubernetes的official java client来请求集群的资源,例如Pod,Deployment等。
但是不幸的是,我发现似乎没有API可以请求集群指标,例如所有Pod使用的总CPU和内存。
您知道如何使用Java客户端获取集群指标吗?
谢谢!
答案 0 :(得分:0)
认为您无法使用official java client来做到这一点。
相反,您可以设置prometheus,将其配置为抓取指标,然后使用Prometheus HTTP API获取JSON格式的API响应。
答案 1 :(得分:0)
将metrics-server部署到群集。
然后,您可以访问metrics.k8s.io/v1beta1
API,以获取pods
和nodes
作为常规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>