【问题标题】:Kubernetes Java API for Metrics用于度量的 Kubernetes Java API
【发布时间】:2020-09-01 15:55:23
【问题描述】:

我正在通过 kubectl 命令获取 pod 指标

➜  kubectl top pods
NAME                CPU(cores)   MEMORY(bytes)
api-6bd876fc8b-85dnx   72m          553Mi
ui-67b794cf8d-gcrg5    0m           1Mi

但我想通过Java客户端https://github.com/kubernetes-client/java/试试

是否支持通过 kubernetes-client 获取 Pods 和 Nodes 的 Metrics ?

【问题讨论】:

    标签: java kubernetes


    【解决方案1】:

    Resource Metrics API 未包含在官方 Java 客户端库中。 因此您必须按以下方式查询 API 服务器:

    GET /apis/metrics/v1alpha1/namespaces/{namespace}/pods/{pod}
    

    这将返回当前指标的结果。

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

    希望这能回答你的问题。

    【讨论】:

      【解决方案2】:

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

      PodMetricsList list = new Metrics(client).getPodMetrics("playground");
      
      for(PodMetrics podMetrics:list.getItems()){
          for(ContainerMetrics containerMetrics:podMetrics.getContainers()){
                      System.out.println(containerMetrics.getUsage());
          }
      }
      

      【讨论】:

        【解决方案3】:

        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}}
        

        【讨论】:

          猜你喜欢
          • 2018-08-31
          • 1970-01-01
          • 1970-01-01
          • 2020-06-21
          • 2017-04-08
          • 1970-01-01
          • 2011-09-22
          • 2018-07-09
          • 2018-06-24
          相关资源
          最近更新 更多