linux

Linux环境中K8S监控如何实现

小樊
37
2025-10-12 00:52:13
栏目: 智能运维

Linux环境下K8S监控实现方法

一、基础监控工具(自带/轻量级)

  1. kubectl命令行工具
    Kubernetes官方提供的命令行工具,用于快速查看集群基础状态,无需额外部署。常用命令包括:

    • kubectl get nodes:查看集群节点状态(Ready/NotReady);
    • kubectl get pods --all-namespaces:查看所有命名空间的Pod运行状态;
    • kubectl describe node <节点名>:查看节点详细资源使用情况及事件;
    • kubectl top nodes/pods:查看节点/Pod的CPU、内存使用量(需Metrics Server支持)。
  2. Metrics Server
    集群范围的资源指标聚合器,收集CPU、内存等核心指标,为kubectl top等工具提供数据。部署方式简单,通过Helm或YAML文件即可安装,是K8S基础监控的必备组件。

  3. cAdvisor
    轻量级容器资源监控工具,默认集成在K8S的kubelet组件中,用于收集单个容器的CPU、内存、磁盘、网络使用情况。无需单独部署,可通过K8S API或Prometheus直接采集其暴露的指标。

二、核心监控方案(Prometheus+Grafana)

Prometheus+Grafana是Linux环境下K8S监控的主流组合,实现指标采集-存储-可视化-告警全链路监控。

  1. Prometheus部署
    通过Prometheus Operator简化部署(推荐),执行以下命令快速安装:

    kubectl apply -f https://raw.githubusercontent.com/coreos/prometheus-operator/master/bundle.yaml
    

    或使用Helm Chart部署(更灵活):

    helm install prometheus stable/prometheus --set global.storage.size=10Gi
    

    配置Prometheus抓取K8S指标,编辑prometheus.yaml文件,添加以下核心配置:

    scrape_configs:
      # 抓取K8S节点指标
      - job_name: 'kubernetes-nodes'
        kubernetes_sd_configs:
          - role: node
        relabel_configs:
          - source_labels: [__meta_kubernetes_node_annotation_prometheus_io_scrape]
            action: keep
            regex: "true"
          - source_labels: [__meta_kubernetes_node_annotation_prometheus_io_port]
            target_label: __address__
            replacement: :9100
      # 抓取kube-state-metrics指标
      - job_name: 'kube-state-metrics'
        static_configs:
          - targets: ['kube-state-metrics.monitoring.svc.cluster.local:8080']
    

    应用配置后,Prometheus会自动发现并采集K8S集群的指标。

  2. Grafana可视化
    部署Grafana并配置Prometheus为数据源:

    kubectl apply -f https://raw.githubusercontent.com/coreos/kube-prometheus/master/manifests/grafana/grafana.yaml
    

    访问Grafana Web界面(默认端口3000),添加Prometheus数据源后,导入现成的K8S监控仪表盘(如Kube-Prometheus提供的Node Exporter FullKubernetes Cluster Monitoring等),实现节点资源使用率、Pod状态、Deployment副本数、Service流量等指标的可视化。

  3. 告警配置(Alertmanager)
    结合Alertmanager实现告警通知,配置Prometheus的alerting字段指向Alertmanager服务,并在rules中定义告警规则(如节点CPU使用率超过80%、Pod内存泄漏等)。告警可通过邮件、Slack、PagerDuty等方式发送。

三、补充监控组件

  1. kube-state-metrics
    监听K8S API服务器,收集集群内资源对象的状态指标(如Pod的创建/删除时间、Deployment的副本数、Service的端点数量等),补充Prometheus的基础指标,提供更丰富的监控维度。部署命令:

    kubectl apply -f https://github.com/kubernetes-sigs/kube-state-metrics/releases/latest/download/components.yaml
    
  2. Node Exporter
    采集节点级别的硬件和操作系统指标(如CPU负载、内存使用、磁盘IO、网络流量等),通常以DaemonSet形式部署在每个节点上,确保所有节点的指标都能被Prometheus采集。部署方式可通过Helm Chart或YAML文件完成。

四、日志监控(可选)

若需监控K8S集群的日志,可使用ELK Stack(Elasticsearch+Logstash+Kibana)Loki+Grafana方案:

0
看了该问题的人还看了