Linux环境下K8S监控资源的常用方法与工具
一、基础命令行工具:快速查看资源状态
-
kubectl top:Kubernetes自带的轻量级命令,用于快速查看节点和Pod的资源使用情况(CPU、内存)。
- 查看节点资源使用:
kubectl top nodes - 查看所有命名空间的Pod资源使用:
kubectl top pods --all-namespaces - 注意:需提前安装Metrics Server(见下文),否则无法显示具体数值。
- 查看节点资源使用:
-
kubectl基础命令:通过Kubernetes API获取集群资源的状态信息,适合日常运维快速检查。
- 查看节点列表及状态:
kubectl get nodes - 查看所有命名空间的Pod列表:
kubectl get pods --all-namespaces - 查看Deployment状态:
kubectl get deployments --all-namespaces - 查看集群事件(如Pod异常、节点故障):
kubectl get events --all-namespaces
- 查看节点列表及状态:
二、Metrics Server:集群资源指标聚合器
Metrics Server是Kubernetes集群的核心监控组件,负责收集节点和Pod的CPU、内存使用数据,为kubectl top和其他监控工具提供数据源。
- 安装步骤:通过kubectl应用官方配置文件即可部署:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml - 作用:将节点和Pod的资源使用数据聚合到Kubernetes API中,支持按命名空间、Pod名称等维度筛选。
三、Prometheus + Grafana:专业监控与可视化方案
这是Linux环境下K8S最流行的监控组合,适用于生产级场景,支持全栈监控(节点、Pod、容器、集群组件)和自定义告警。
- Prometheus:开源时间序列数据库,负责收集、存储监控数据。
- 部署方式:推荐使用Helm Chart简化部署(如
stable/prometheus或prometheus-community/kube-prometheus-stack),自动配置Kubernetes服务发现(无需手动维护Target列表)。 - 数据采集:通过
scrape_configs配置自动发现Kubernetes节点、Pod、kube-state-metrics等服务,采集CPU、内存、磁盘、网络等指标。
- 部署方式:推荐使用Helm Chart简化部署(如
- Grafana:开源可视化平台,用于将Prometheus中的数据转换为直观的仪表板。
- 配置步骤:
- 部署Grafana:
kubectl apply -f https://raw.githubusercontent.com/grafana/grafana/master/deploy/recommended/grafana.yaml - 添加Prometheus数据源:进入Grafana Web界面(默认端口3000),配置Prometheus地址(如
http://prometheus-operated.monitoring.svc.cluster.local:9090)。 - 导入仪表板:通过Grafana的“+”→“Dashboard”→“Import”,输入现成仪表板ID(如Kubernetes集群监控的ID:1860、1933)即可查看节点、Pod的资源使用趋势。
- 部署Grafana:
- 配置步骤:
四、辅助监控组件:补充关键指标
-
cAdvisor:容器级别的资源监控工具,收集容器的CPU、内存、磁盘、网络使用数据。
- 集成方式:默认集成在Kubernetes的kubelet组件中,可通过Kubernetes Dashboard或
kubectl top间接查看其数据,也可单独通过Prometheus采集(cAdvisor暴露的/metrics端点)。
- 集成方式:默认集成在Kubernetes的kubelet组件中,可通过Kubernetes Dashboard或
-
kube-state-metrics:监听Kubernetes API Server,生成集群资源对象的状态指标(如Pod的创建/删除次数、Deployment的副本数、Node的Ready状态)。
- 作用:补充Prometheus的“资源使用指标”,提供“资源状态指标”,帮助监控集群的健康状况(如Pending的Pod数量、节点是否NotReady)。
- 部署方式:通过Helm Chart(
kube-state-metrics)或手动部署(需创建DaemonSet或Deployment)。
-
Node Exporter:收集节点级别的硬件和操作系统指标(如CPU使用率、内存使用量、磁盘IO、网络流量、文件系统空间)。
- 部署方式:通过DaemonSet控制器部署,确保每个节点都运行一个Node Exporter实例,其指标可通过Prometheus采集(目标地址为
node-exporter.)。.svc.cluster.local:9100
- 部署方式:通过DaemonSet控制器部署,确保每个节点都运行一个Node Exporter实例,其指标可通过Prometheus采集(目标地址为
五、第三方工具:增强特定场景监控
-
DeepSeek:专为K8s设计的深度监控与诊断工具,支持实时监控(资源使用、容器运行状态)、异常预警(基于机器学习的资源瓶颈预测)、根源分析(定位Pod OOM、CPU飙升的原因)。
- 部署步骤:添加DeepSeek Helm仓库(
helm repo add deepseek https://charts.deepseek.com),创建命名空间并安装(helm install deepseek deepseek/deepseek --namespace deepseek),配置预警规则(如Pod CPU使用率超过80%触发告警)。
- 部署步骤:添加DeepSeek Helm仓库(
-
ELK Stack(Elasticsearch+Logstash+Kibana):主要用于日志收集、搜索与可视化,补充Prometheus的“指标监控”,实现“日志+指标”的联合分析(如通过日志定位Pod异常的原因,结合指标判断异常趋势)。
- 部署方式:通过DaemonSet部署Filebeat收集节点日志,发送至Logstash进行处理,最后存储到Elasticsearch,通过Kibana创建仪表板展示日志和指标关联视图。