0

im currently using the client java kubernetes library to get metrics from the Kubernetes API

<dependency>
    <groupId>io.kubernetes</groupId>
    <artifactId>client-java</artifactId>
    <version>12.0.0</version>
</dependency>

I found out that some Metrics regarding Network and Filesystem I/O, located under this path https://kubernetes.default.svc/api/v1/nodes/worker02/proxy/metrics/cadvisor are really interesting.

container_network_receive_bytes_total{container="",id="/kubepods/besteffort/podb6bf750b-4501-4082-9a50-3751ff1e4f0f/72f84fc52547c628baeee527a47faa204eadd660ba4cbb94d8889562ff0b7789",image="docker.io/rancher/pause:3.1",interface="eth0",name="72f84fc52547c628baeee527a47faa204eadd660ba4cbb94d8889562ff0b7789",namespace="kube-system",pod="svclb-traefik-2wlkz"} 50398 1618932055188

However as they are in prometheus metrics format there is no support for them by the library.

Getting the Information with a http client was not successful (javax.net.ssl.SSLHandshakeException) as I realized later because I am not passing Token and Certificate. Is there a way to use the client-java lib to just get the raw answer of the API?

I am thinking of something like this, thanks in advance

String apiAnswer = client.getRaw("/api/v1/nodes/worker02/proxy/metrics/cadvisor");
Lukonjun
  • 226
  • 1
  • 10

1 Answers1

0

You can make a call using ApiClient directly. Something like this.

ApiClient client = Config.defaultClient();
ApiResponse<Object> result = client.execute(client.buildCall(...));
Rafał Leszko
  • 4,939
  • 10
  • 19
  • Hi, i tried the following 'ApiResponse result = client.execute(client.buildCall("/api/v1/nodes/worker01/proxy/metrics/cadvisor ", "GET", null, null, null, null, null, null, null, null)); ' however i get a RuntimeException for the authNames beeing null. Could you provide an Example on what arguments to pass? – Lukonjun Apr 21 '21 at 19:38