用于度量的Kubernetes Java API

用于度量的Kubernetes Java API,java,kubernetes,Java,Kubernetes,我通过kubectl命令获取pod指标 ➜ kubectl top pods NAME CPU(cores) MEMORY(bytes) api-6bd876fc8b-85dnx 72m 553Mi ui-67b794cf8d-gcrg5 0m 1Mi 但是我想尝试一下Java客户端 是否支持通过kubernetes客户端获取POD和节点的度量?官方Java客户端库中不包含资源度量API。 因此,您必须按如下方

我通过kubectl命令获取pod指标

➜  kubectl top pods
NAME                CPU(cores)   MEMORY(bytes)
api-6bd876fc8b-85dnx   72m          553Mi
ui-67b794cf8d-gcrg5    0m           1Mi
但是我想尝试一下Java客户端


是否支持通过kubernetes客户端获取POD和节点的度量?

官方Java客户端库中不包含资源度量API。 因此,您必须按如下方式查询API服务器:

GET /apis/metrics/v1alpha1/namespaces/{namespace}/pods/{pod}
它将返回当前度量的结果

以下是一些能够添加更多自定义指标的参考:

希望这能回答您的问题。

Kotlin解决方案

val client = Config.defaultClient();
Configuration.setDefaultApiClient(client);
Metrics(client).getPodMetrics(
        "name-space"
).items.forEach {
    it.containers.forEach {metrics ->
        println(metrics.usage)
    }
}
这应该给出您正在寻找的指标

样本输出

{cpu=Quantity{number=0.011135729, format=DECIMAL_SI}, memory=Quantity{number=831680512, format=BINARY_SI}}

{cpu=Quantity{number=0.008742460, format=DECIMAL_SI}, memory=Quantity{number=781041664, format=BINARY_SI}}

正如blue man所说,现在可以获得此指标
Java解决方案

PodMetricsList=新指标(客户端).getPodMetrics(“游乐场”);
for(PodMetrics PodMetrics:list.getItems()){
对于(ContainerMetrics ContainerMetrics:podMetrics.getContainers()){
System.out.println(containerMetrics.getUsage());
}
}