当前位置: 首页 > news >正文

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

在这里插入图片描述

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

方案 1: 使用 kubectl top 命令

步骤

  1. 确保 Metrics Server 已安装:

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

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

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

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

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

      kubectl top pods -n <namespace>
      

示例输出

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 的资源请求和限制:
      kubectl describe pod <pod-name> -n <namespace>
      

示例输出

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://abcdef123456Image:          my-app-image:latestPort:           8080/TCPState:          RunningStarted:      Mon, 01 Nov 2023 10:00:01 +0000Ready:          TrueRestart Count:  0Limits:cpu:     1memory:  1GiRequests:cpu:     500mmemory:  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 使用情况:

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

    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 和内存使用情况:

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

示例输出

{"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:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
    
  2. 获取访问凭证:
    创建一个服务账户并赋予其适当的权限:

    kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
    kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
    
  3. 获取 Token:

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

    • 启动代理并访问 Dashboard:
      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 和内存。选择最适合您的需求的方案,确保集群在高负载情况下保持稳定。


http://www.mrgr.cn/news/70314.html

相关文章:

  • 数据结构(顺序队列——c语言实现)
  • pcap_set_buffer_size()函数
  • [译]Elasticsearch Sequence ID实现思路及用途
  • 基于python的机器学习(四)—— 聚类(一)
  • ros2学习日记_241124_ros相关链接
  • MyBatis---代理Dao方式的CRUD、MyBatis参数详解、MyBatis的配置文件
  • 【工作技术栈】【arthas】arthas使用方式总结(诊断问题+方法执行)
  • 沃德云商协:助力多组织无障碍沟通与合作的平台
  • 2024年精选SaaS招聘系统平台汇总
  • gcc 1.c和g++ 1.c编译阶段有什么区别?如何知道g++编译默认会定义_GNU_SOURCE?
  • 2024MoonBit全球编程创新挑战赛参赛作品“飞翔的小鸟”技术开发指南
  • 模糊搜索:在不确定性中寻找精确结果
  • PEF22554HTV3.1 品牌INTEL 电信 IC 调帧器,线路接口单元(LIU) P-TQFP-144-6 在售20000PCS
  • 云时代基础设施模型:可变与不可变之析
  • APO全量日志对接logstash和fluent日志采集生态
  • 人工智能、机器学习与深度学习:层层递进的技术解读
  • FPGA学习笔记#5 Vitis HLS For循环的优化(1)
  • 健身中心健身管理系统的设计与实现(源码+数据脚本+论文+技术文档)
  • 剧本杀app开发,行业发展的新方向
  • qt ui设计案例--登录界面
  • uniapp—android原生插件开发(1环境准备)
  • PostgreSQL 计算两个时间之间的日期差
  • 因为我不停地“抄”爆款选题,终于月入5万
  • 叉车倒车防撞预警系统:保障生产效率和员工安全
  • 2-UML概念模型测试
  • Elasticsearch实战应用:从入门到精通