【K8S系列 】在K8S集群怎么查看各个pod占用的资源大小与详细解决方案【已解决】

要查看 Kubernetes 集群中各个 Pod 占用的资源大小(包括 CPU 和内存),可以使用多种方法。以下是详细的步骤介绍每种方案。

方案 1: 使用 kubectl top 命令

步骤

  1. 确保 Metrics Server 已安装:

    • kubectl top 命令依赖于 Metrics Server。您可以使用以下命令检查 Metrics Server 是否已安装:

      bash 复制代码
      kubectl get pods -n kube-system | grep metrics-server
    • 如果没有安装,可以通过以下命令安装 Metrics Server:

      bash 复制代码
      kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
  2. 查看所有 Pod 的资源使用情况:

    • 使用以下命令查看所有命名空间中 Pod 的 CPU 和内存使用情况:

      bash 复制代码
      kubectl top pods --all-namespaces
    • 如果只想查看特定命名空间中的 Pod,可以使用:

      bash 复制代码
      kubectl top pods -n <namespace>

示例输出

plaintext 复制代码
NAMESPACE     NAME           CPU(cores)   MEMORY(bytes)
default       my-app-1      500m         128Mi
default       my-app-2      300m         256Mi
kube-system    kube-dns      100m         64Mi

说明

  • CPU(cores): 显示 Pod 当前使用的 CPU 核心数。
  • MEMORY(bytes): 显示 Pod 当前使用的内存量。

方案 2: 使用 kubectl describe 命令

步骤

  1. 查看特定 Pod 的详细信息 :
    • 使用以下命令查看特定 Pod 的资源请求和限制:

      bash 复制代码
      kubectl describe pod <pod-name> -n <namespace>

示例输出

plaintext 复制代码
Name:           my-app-1
Namespace:      default
Priority:       0
Node:          node-1/192.168.1.1
Start Time:    Mon, 01 Nov 2023 10:00:00 +0000
Labels:         app=my-app
Annotations:    <none>

Status:         Running
IP:             10.244.1.2
Containers:
  app-container:
    Container ID:   docker://abcdef123456
    Image:          my-app-image:latest
    Port:           8080/TCP
    State:          Running
      Started:      Mon, 01 Nov 2023 10:00:01 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     1
      memory:  1Gi
    Requests:
      cpu:     500m
      memory:  256Mi

说明

  • Limits: 表示 Pod 可以使用的最大 CPU 和内存。
  • Requests: 表示 Pod 启动时请求的 CPU 和内存量。

方案 3: 使用 Prometheus 和 Grafana

如果您已经配置了 Prometheus 和 Grafana,可以在 Grafana 中查看 Pod 的资源使用情况,并创建可视化仪表板。

步骤

  1. 确保 Prometheus 和 Grafana 已安装:

    • 如果尚未安装,请参考之前的安装步骤。
  2. 在 Grafana 中查看指标:

    • 登录 Grafana,创建一个新的仪表板。
    • 使用 Prometheus 查询来查看 CPU 和内存使用情况。
示例 Prometheus 查询
  • 查询所有 Pod 的 CPU 使用情况:

    plaintext 复制代码
    sum(rate(container_cpu_usage_seconds_total{container_name!="POD"}[5m])) by (pod_name)
  • 查询所有 Pod 的内存使用情况:

    plaintext 复制代码
    sum(container_memory_usage_bytes{container_name!="POD"}) by (pod_name)

说明

  • 这些查询将返回每个 Pod 的 CPU 和内存使用情况,可以在 Grafana 中生成图表或表格进行可视化。

方案 4: 使用 Kube Metrics API

Kubernetes Metrics API 提供了 Pod 和节点的资源使用情况,可以通过直接调用 API 来获取数据。

步骤

  1. 确保 Metrics Server 已安装:

    • 请参考方案 1 中的步骤。
  2. 查询 Pod 资源使用情况:

    • 使用以下命令获取所有 Pod 的 CPU 和内存使用情况:

      bash 复制代码
      kubectl get --raw "/apis/metrics.k8s.io/v1beta1/pods" | jq .
    • 这将返回一个 JSON 对象,其中包含所有 Pod 的资源使用情况。

示例输出

json 复制代码
{
  "kind": "PodMetricsList",
  "apiVersion": "metrics.k8s.io/v1beta1",
  "items": [
    {
      "metadata": {
        "name": "my-app-1",
        "namespace": "default",
        ...
      },
      "containers": [
        {
          "name": "app-container",
          "usage": {
            "cpu": "500m",
            "memory": "128Mi"
          }
        }
      ]
    },
    ...
  ]
}

说明

  • 通过解析 JSON 输出,您可以获取每个 Pod 的 CPU 和内存使用情况。

方案 5: 使用 Kubernetes Dashboard

Kubernetes Dashboard 是一个基于 Web 的用户界面,可以用于管理和监控 Kubernetes 集群。

步骤

  1. 安装 Kubernetes Dashboard:

    bash 复制代码
    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
  2. 获取访问凭证 :

    创建一个服务账户并赋予其适当的权限:

    bash 复制代码
    kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
    kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
  3. 获取 Token:

    bash 复制代码
    kubectl get secret -n kubernetes-dashboard | grep dashboard-admin-token
    kubectl describe secret <secret-name> -n kubernetes-dashboard
  4. 访问 Dashboard:

    • 启动代理并访问 Dashboard:

      bash 复制代码
      kubectl proxy
    • 打开浏览器,访问 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

  5. 登录:

    • 使用上一步获取的 Token 登录。

6. 监控 Pod 资源使用情况

在 Dashboard 中,您可以查看各个 Pod 的 CPU 和内存使用情况,提供友好的用户界面。

总结

通过以上方案,您可以轻松查看 Kubernetes 集群中各个 Pod 的资源使用情况,包括 CPU 和内存。选择最适合您的需求的方案,确保集群在高负载情况下保持稳定。

相关推荐
IT_陈寒5 分钟前
🔥3分钟掌握JavaScript性能优化:从V8引擎原理到5个实战提速技巧
前端·人工智能·后端
程序员清风40 分钟前
贝壳一面:年轻代回收频率太高,如何定位?
java·后端·面试
ggaofeng42 分钟前
k8s网络原理
网络·容器·kubernetes
考虑考虑1 小时前
Java实现字节转bcd编码
java·后端·java ee
AAA修煤气灶刘哥1 小时前
ES 聚合爽到飞起!从分桶到 Java 实操,再也不用翻烂文档
后端·elasticsearch·面试
爱读源码的大都督2 小时前
Java已死?别慌,看我如何用Java手写一个Qwen Code Agent,拯救Java
java·人工智能·后端
星辰大海的精灵2 小时前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法
天天摸鱼的java工程师2 小时前
RestTemplate 如何优化连接池?—— 八年 Java 开发的踩坑与优化指南
java·后端
一乐小哥2 小时前
一口气同步10年豆瓣记录———豆瓣书影音同步 Notion分享 🚀
后端·python
LSTM972 小时前
如何使用C#实现Excel和CSV互转:基于Spire.XLS for .NET的专业指南
后端