当前位置: 首页 > 知识库问答 >
问题:

如何使用JavaApi从Kubernetes检索pod内存和cpu使用情况

百里伟
2023-03-14

有没有Java的API来检索pod的CPU和内存使用情况?我不是在寻找一个完整的监控解决方案,比如使用Grafana或Prometheus或不使用kubectl top pod,而是想使用JavaAPI检索当前的使用情况。关于如何做的任何示例或参考留档都将有很大帮助。

客户端库

https://kubernetes.io/docs/reference/using-api/client-libraries/

示例-https://github.com/kubernetes-client/java#installation

类似问题:

如何在kubernetes上获得最大mem使用率和pod cpu使用率

来自指标服务器的库内 Pod CPU 使用率 (%)

谢谢。

共有2个答案

庄瀚玥
2023-03-14

您可以将Fabric8 java客户端用于Kubernates。

请参阅此链接以获取示例实现:

https://github . com/rohanKanojia/kubernetes-client/commit/d 6453 e 0 b 6 a 424 c 89d 0 f 9 e 237 ab 818 a 0 f 456 EC 11 f # diff-d 8 a 58 a 09 a 3 dece 4 f 92 FD 5 fefd 1927 e 08

try (KubernetesClient client = new DefaultKubernetesClient()) {
      NodeMetricsList nodeMetricList = client.top().nodes().metrics();

      log("name CPU(cores) CPU(%) Memory(Bytes) Memory(%)");
      for (NodeMetrics nodeMetrics : nodeMetricList.getItems()) {
        log(nodeMetrics.toString());
        log(nodeMetrics.getUsage().toString());
        log(nodeMetrics.getMetadata().getName() +
          " " + nodeMetrics.getUsage().get("cpu") +
          " " + nodeMetrics.getUsage().get("memory"));
      }

    } catch (KubernetesClientExcepthtml" target="_blank">ion e) {
      logger.error(e.getMessage(), e);

对于豆荚,

PodMetricsList podMetricList = client.top().pods().metrics();
            for(PodMetrics metrics: podMetricList.getItems())
            {
                for(ContainerMetrics containerMetric : metrics.getContainers())
                {
                    Quantity quantity = containerMetric.getUsage().get("cpu");
                    String amount = quantity.getAmount();
                }
            }

另外,粘贴此链接以供参考:

https://developers . red hat . com/blog/2020/05/20/入门使用fabric 8-kubernetes-Java-client/

宋和颂
2023-03-14

您可以安装度量服务器,然后通过API服务器向资源度量API发出直接HTTP请求来获取pod的资源使用情况:

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

资源指标 API 似乎没有包含在官方 Java 客户端库中。因此,您可能必须手动发出 API 请求。

 类似资料:
  • 我遵循了本页中第一个可能的解决方案:检查kubernetes pod CPU和内存 我试过命令: Kubectl执行pod_name-- /bin/bash 但是它不起作用,因此我尝试了这个命令: kubectl exec-n[namespace][pod_name]--目录测试.log 我知道这一点,因为当我运行该命令时: kubectl获取pods--所有名称空间|grep[pod_name]

  • 我对Kubernetes仪表板有意见。我实际上使用了托管的Kubernetes服务AKS,并使用以下设置创建了一个Kubernetes集群: Kubernetes 1.20.9版 1个大小为Standard_DS2_v2的工作节点 它从自动配置coredns、corednsautoscaler、omsagent-rs、隧道前端和metrics-sever开始成功。 之后,我为我的服务应用了三个部署

  • 问题内容: 我需要在Java中检查服务器的CPU和内存使用情况,有人知道怎么做吗? 问题答案: 如果你正在专门寻找JVM中的内存: 但是,这些仅应作为估计…

  • 我需要通过prometheus查询获得kubernetes吊舱中的CPU和内存使用情况。有人能帮忙吗?

  • 我在IBM Bluemix上运行Kubernetes cluster 1.5.3,我想获得pod的资源利用率(内存和cpu)作为原始数据点。Kubernetes公开了这样API吗? ➜ bluemix git:(master) ✗ k 集群信息 Kubernetes master 正在运行 Heapster运行在https://x:x/API/v1/proxy/namespaces/kube-sy

  • 我想看看kubernetes吊舱使用了多少内存和CPU。我为此运行了以下命令: 我收到以下错误: > 如果我们进入pod并运行linux命令,我们会得到相同的输出吗?