首页主机资讯Kubernetes在Linux上如何监控

Kubernetes在Linux上如何监控

时间2025-12-04 23:36:04发布访客分类主机资讯浏览1027
导读:Kubernetes 在 Linux 上的监控实践 一 监控分层与组件 建议按层级构建可观测性:基础资源、容器与编排、日志、可视化与告警、主机与内核。 核心组件与作用如下: 层级 组件 作用与端口/地址 基础资源 Metr...

Kubernetes 在 Linux 上的监控实践

一 监控分层与组件

  • 建议按层级构建可观测性:基础资源、容器与编排、日志、可视化与告警、主机与内核。
  • 核心组件与作用如下:
层级 组件 作用与端口/地址
基础资源 Metrics Server HPA/VPA/Cluster Autoscaler 提供资源指标(如 CPU/内存),是 K8s 资源度量的聚合入口
节点与系统 node_exporter(DaemonSet) 暴露节点级指标(CPU、内存、磁盘、网络),默认端口 9100
容器与编排 cAdvisor(已集成于 kubelet) 收集容器资源与性能,默认 10250/10255 路径
编排状态 kube-state-metrics Pod/Deployment/Node 等对象状态转为指标
可视化与告警 Prometheus + Alertmanager + Grafana 指标抓取、存储、告警与可视化
日志 LokiELK(Elasticsearch/Logstash/Kibana) 聚合与检索容器与节点日志
主机与内核 Linux 工具(如 nmon) 辅助排查节点性能与瓶颈

以上组件覆盖了节点、容器、编排对象与日志的全链路监控需求,适合在 CentOS/RHEL 等 Linux 发行版上落地。

二 快速上手 Prometheus + Grafana

  • 使用 Helm 一键部署监控栈(推荐):
    • 添加仓库并安装 kube-prometheus-stack(内含 Prometheus/Alertmanager/Operator 与默认仪表盘):
      helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
      helm install prometheus prometheus-community/kube-prometheus-stack --namespace monitoring --create-namespace
      
    • 单独安装 Grafana(如未随栈安装):
      helm repo add grafana https://grafana.github.io/helm-charts
      helm install grafana grafana/grafana --namespace monitoring
      
    • 获取 Grafana 管理员密码并端口转发以便访问:
      kubectl get secret -n monitoring grafana -o jsonpath='{
      .data.admin-password}
          ' | base64 -d
      kubectl port-forward -n monitoring svc/grafana 3000:80
      
    • 在 Grafana 中添加数据源 Prometheus(服务地址:http://prometheus-server.monitoring.svc.cluster.local:9090),导入官方仪表盘(如 Kubernetes Cluster Monitoring)。
  • 手动最小可用方案(适合学习/验证):
    • 在宿主机部署 node_exporter(每个节点):
      wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
      tar -xvf node_exporter-1.2.2.linux-amd64.tar.gz &
          &
           cd node_exporter-1.2.2.linux-amd64
      ./node_exporter
      
    • 配置 Prometheus 抓取节点与 K8s 目标(prometheus.yml 片段):
      scrape_configs:
        - job_name: 'node_exporter'
          static_configs:
            - targets: ['<
          node1_ip>
          :9100','<
          node2_ip>
      :9100']
        - job_name: 'kubernetes-nodes'
          scheme: https
          tls_config:
            ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
          bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
          kubernetes_sd_configs:
            - role: node
          relabel_configs:
            - action: labelmap
              regex: __meta_kubernetes_node_label_(.+)
            - target_label: __address__
              replacement: kubernetes.default.svc:443
            - source_labels: [__meta_kubernetes_node_name]
              regex: (.+)
              target_label: __metrics_path__
              replacement: /api/v1/nodes/${
      1}
          /proxy/metrics
      
    • 启动 Prometheus 并访问 http://< prometheus_host> :9090 验证 Targets 健康。

三 日志监控与可视化

  • 日志方案选型:
    • Loki + Grafana:轻量、与 Prometheus 生态一致,适合云原生场景。
      helm install loki grafana/loki-stack --namespace monitoring
      # Grafana 添加 Loki 数据源:http://loki.monitoring.svc.cluster.local:3100
      
    • ELK(Elasticsearch/Logstash/Kibana):功能全面,适合复杂检索与分析。
  • 常用日志操作:
    kubectl logs <
        pod-name>
         -n <
        namespace>
        
    kubectl logs -f <
        pod-name>
         -n <
        namespace>
      # 实时跟踪
    kubectl get events --all-namespaces --sort-by=.metadata.creationTimestamp
    
  • 在 Grafana 中通过 Explore 选择 Loki 数据源,使用标签选择器(如 { namespace=“default”, pod=“myapp”} )查询日志。

四 快速排障与常用命令

  • 资源与事件查看:
    kubectl get nodes
    kubectl get pods --all-namespaces
    kubectl get deployments --all-namespaces
    kubectl get services --all-namespaces
    kubectl describe pod <
        pod-name>
         -n <
        namespace>
        
    kubectl describe deployment <
        deploy-name>
         -n <
        namespace>
        
    kubectl get events --all-namespaces --sort-by=.metadata.creationTimestamp
    
  • 可视化与 Web UI:
    • Kubernetes Dashboard:快速查看与操作资源。
      kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
      kubectl proxy
      # 访问:http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
      # 获取 Token:kubectl -n kube-system create token admin-user
      
    • Cockpit(CentOS/RHEL 自带 Web 管理):
      yum install -y cockpit
      systemctl enable --now cockpit.socket
      firewall-cmd --permanent --add-service=cockpit &
          &
           firewall-cmd --reload
      # 访问:http://<
          server_ip>
          :9090
      
  • 第三方监控(企业级):如 Datadog、New Relic、Sysdig,提供开箱即用的 K8s 监控、日志与 APM 能力。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Kubernetes在Linux上如何监控
本文地址: https://pptw.com/jishu/764088.html
怎样实现MariaDB负载均衡 MariaDB内存优化配置方法

游客 回复需填写必要信息