【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 和内存。选择最适合您的需求的方案,确保集群在高负载情况下保持稳定。

相关推荐
练习本5 小时前
数据智能开发五 技术架构
微服务·云原生·架构
小坏讲微服务5 小时前
SpringCloud零基础学全栈,实战企业级项目完整使用
后端·spring·spring cloud
SHIPKING3935 小时前
【Docker安装】Windows10专业版安装教程
运维·docker·容器
humors2216 小时前
服务端开发案例(不定期更新)
java·数据库·后端·mysql·mybatis·excel
庸子6 小时前
Kubernetes调度器深度解析:从资源分配到亲和性策略的架构师之路
java·算法·云原生·贪心算法·kubernetes·devops
easy_coder6 小时前
超越故障修复:从 Kubernetes POD 崩溃到 AI 驱动的运维认知重构
云原生·架构·kubernetes·云计算
编程的一拳超人6 小时前
Docker核心概念、常用命令与实战指南
运维·docker·容器
编程的一拳超人6 小时前
Docker 核心命令速查表(精细分类版)
运维·docker·容器
风吹一夏v6 小时前
Docker 部署 GitLab 和 GitLab Runner 指南
docker·容器·gitlab
曦樂~6 小时前
【Docker】网络
docker·容器·php