linux

Linux环境下K8S如何监控资源

小樊
36
2025-11-10 19:45:29
栏目: 智能运维

Linux环境下K8S监控资源的常用方法与工具

一、基础命令行工具:快速查看资源状态

  1. kubectl top:Kubernetes自带的轻量级命令,用于快速查看节点和Pod的资源使用情况(CPU、内存)。

    • 查看节点资源使用:kubectl top nodes
    • 查看所有命名空间的Pod资源使用:kubectl top pods --all-namespaces
    • 注意:需提前安装Metrics Server(见下文),否则无法显示具体数值。
  2. 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和其他监控工具提供数据源。

三、Prometheus + Grafana:专业监控与可视化方案

这是Linux环境下K8S最流行的监控组合,适用于生产级场景,支持全栈监控(节点、Pod、容器、集群组件)和自定义告警

  1. Prometheus:开源时间序列数据库,负责收集、存储监控数据。
    • 部署方式:推荐使用Helm Chart简化部署(如stable/prometheusprometheus-community/kube-prometheus-stack),自动配置Kubernetes服务发现(无需手动维护Target列表)。
    • 数据采集:通过scrape_configs配置自动发现Kubernetes节点、Pod、kube-state-metrics等服务,采集CPU、内存、磁盘、网络等指标。
  2. 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的资源使用趋势。

四、辅助监控组件:补充关键指标

  1. cAdvisor:容器级别的资源监控工具,收集容器的CPU、内存、磁盘、网络使用数据。

    • 集成方式:默认集成在Kubernetes的kubelet组件中,可通过Kubernetes Dashboard或kubectl top间接查看其数据,也可单独通过Prometheus采集(cAdvisor暴露的/metrics端点)。
  2. kube-state-metrics:监听Kubernetes API Server,生成集群资源对象的状态指标(如Pod的创建/删除次数、Deployment的副本数、Node的Ready状态)。

    • 作用:补充Prometheus的“资源使用指标”,提供“资源状态指标”,帮助监控集群的健康状况(如Pending的Pod数量、节点是否NotReady)。
    • 部署方式:通过Helm Chart(kube-state-metrics)或手动部署(需创建DaemonSet或Deployment)。
  3. Node Exporter:收集节点级别的硬件和操作系统指标(如CPU使用率、内存使用量、磁盘IO、网络流量、文件系统空间)。

    • 部署方式:通过DaemonSet控制器部署,确保每个节点都运行一个Node Exporter实例,其指标可通过Prometheus采集(目标地址为node-exporter.<namespace>.svc.cluster.local:9100)。

五、第三方工具:增强特定场景监控

  1. 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%触发告警)。
  2. ELK Stack(Elasticsearch+Logstash+Kibana):主要用于日志收集、搜索与可视化,补充Prometheus的“指标监控”,实现“日志+指标”的联合分析(如通过日志定位Pod异常的原因,结合指标判断异常趋势)。

    • 部署方式:通过DaemonSet部署Filebeat收集节点日志,发送至Logstash进行处理,最后存储到Elasticsearch,通过Kibana创建仪表板展示日志和指标关联视图。

0
看了该问题的人还看了