溫馨提示×

如何在CentOS上配置Kubernetes監控

小樊
54
2025-09-24 13:24:25
欄目: 智能運維

一、基礎環境準備

在CentOS上配置Kubernetes監控前,需確保以下基礎環境已就緒:

  • CentOS系統已升級至最新穩定版(如CentOS Stream 8/9);
  • Kubernetes集群已正常部署(可通過kubectl get nodes驗證節點狀態為Ready);
  • 已配置kubectl命令行工具(版本與集群版本兼容);
  • 防火墻開放必要端口(如Prometheus的9090、Grafana的3000端口)。

二、核心監控組件部署(以Prometheus+Grafana為例)

1. 部署Prometheus Operator(簡化管理)

Prometheus Operator是Kubernetes原生的監控解決方案,可自動化Prometheus、Alertmanager、Grafana等組件的部署與管理。

# 添加Prometheus Community Helm倉庫
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

# 安裝Prometheus Operator(包含Prometheus、Alertmanager、Grafana)
helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring --create-namespace

此命令會自動創建monitoring命名空間,并部署以下組件:

  • Prometheus:負責收集、存儲集群指標;
  • Alertmanager:處理Prometheus生成的告警(如郵件、Slack通知);
  • Grafana:可視化監控數據的Web界面。

2. 配置Prometheus數據采集

Prometheus通過ServiceMonitor資源自動發現Kubernetes集群中的服務(如kube-state-metrics、Node Exporter)。若需自定義采集目標,可編輯Prometheus的ServiceMonitor配置:

# 查看Prometheus的ServiceMonitor列表
kubectl get servicemonitors -n monitoring

# 示例:自定義采集名為"my-app"的應用指標(需提前部署對應的Exporter)
cat <<EOF | kubectl apply -f -
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: my-app-monitor
  namespace: monitoring
spec:
  selector:
    matchLabels:
      app: my-app  # 目標應用的標簽
  endpoints:
  - port: metrics  # 應用暴露指標的端口名稱
    interval: 15s  # 采集間隔
EOF

默認情況下,Prometheus Operator會自動配置以下核心組件的采集:

  • kube-state-metrics:暴露集群資源(Pod、Deployment、Node等)的狀態指標;
  • Node Exporter:采集節點級別的CPU、內存、磁盤等硬件指標;
  • kubelet:采集容器運行時(如Docker、containerd)的性能指標。

3. 配置Grafana可視化

Grafana通過Prometheus作為數據源,展示集群監控數據的儀表盤。

# 獲取Grafana的管理員密碼(首次登錄需使用)
kubectl get secret -n monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

# 端口轉發Grafana服務到本地(方便訪問)
kubectl port-forward -n monitoring svc/grafana 3000:80

# 訪問Grafana(在瀏覽器中打開)
http://<CentOS節點IP>:3000

登錄后(默認用戶名/密碼:admin + 上述獲取的密碼),完成以下配置:

  • 添加Prometheus數據源:進入Configuration > Data Sources,點擊Add data source,選擇Prometheus,填寫URL為http://prometheus-operated.monitoring.svc.cluster.local:9090(Prometheus服務的集群內地址),點擊Save & Test驗證連接;
  • 導入儀表盤:進入Dashboards > Import,輸入以下常用儀表盤ID(覆蓋Kubernetes監控的核心場景):
    • 1860:Kubernetes集群狀態(節點、Pod、Namespace);
    • 2027:Kubernetes節點資源使用率(CPU、內存、磁盤);
    • 2111:Kubernetes Pod資源使用率(CPU、內存);
    • 4086:Kubernetes網絡流量監控。

4. 配置告警規則(可選但推薦)

通過PrometheusRule資源定義告警規則,當集群出現異常時觸發Alertmanager通知。示例如下:

# 創建告警規則文件(如k8s-alerts.yaml)
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: k8s-alerts
  namespace: monitoring
spec:
  groups:
  - name: kubernetes-alerts
    rules:
    # 告警:Pod CPU使用率超過85%(持續2分鐘)
    - alert: HighPodCPUUsage
      expr: sum(rate(container_cpu_usage_seconds_total{namespace!="", pod!="", container!="POD"}[5m])) by (namespace, pod, container) > 0.85
      for: 2m
      labels:
        severity: critical
      annotations:
        summary: "Pod CPU使用率過高({{ $labels.namespace }}/{{ $labels.pod }}/{{ $labels.container }})"
        description: "Pod {{ $labels.pod }} 的CPU使用率已超過85%,持續2分鐘。"

    # 告警:節點內存使用率超過90%(持續5分鐘)
    - alert: HighNodeMemoryUsage
      expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 90
      for: 5m
      labels:
        severity: warning
      annotations:
        summary: "節點內存使用率過高({{ $labels.instance }})"
        description: "節點 {{ $labels.instance }} 的內存使用率已超過90%,持續5分鐘。"

應用告警規則:

kubectl apply -f k8s-alerts.yaml

Alertmanager會根據規則發送通知,需提前配置通知渠道(如郵件、Slack),編輯values.yaml文件(Helm安裝時使用的配置文件)中的alertmanager.config部分即可。

三、補充監控組件(可選)

1. kube-state-metrics(集群狀態指標)

若未通過Prometheus Operator自動部署,可手動安裝:

kubectl apply -f https://github.com/kubernetes-sigs/kube-state-metrics/releases/latest/download/components.yaml

此組件會暴露集群資源的詳細狀態指標(如Pod的重啟次數、Deployment的副本數),供Prometheus采集。

2. Node Exporter(節點硬件指標)

若未通過Prometheus Operator自動部署,可手動創建DaemonSet:

kubectl apply -f https://raw.githubusercontent.com/prometheus/node_exporter/master/examples/node-exporter-daemonset.yaml

此DaemonSet會在每個節點上運行Node Exporter,采集節點的CPU、內存、磁盤、網絡等硬件指標。

四、驗證監控功能

  1. 檢查Prometheus是否正常運行

    kubectl get pods -n monitoring -l app.kubernetes.io/name=prometheus
    

    若所有Pod狀態為Running,則表示Prometheus已啟動。

  2. 訪問Grafana儀表盤
    通過http://<CentOS節點IP>:3000登錄Grafana,查看導入的儀表盤是否有數據(如節點CPU、內存使用率)。

  3. 觸發告警測試
    手動創建一個高CPU使用的Pod(如stress容器),觀察Prometheus是否生成告警,并通過Alertmanager發送通知。

五、常見問題排查

  • Prometheus無法采集指標:檢查ServiceMonitorselector是否匹配目標服務的標簽,或Prometheus的scrape_interval是否設置過短;
  • Grafana無法連接Prometheus:確認Prometheus服務的集群內地址是否正確,或防火墻是否阻止了訪問;
  • 告警不觸發:檢查告警規則的expr表達式是否正確,或Prometheus的evaluation_interval是否設置過長。

通過以上步驟,可在CentOS上為Kubernetes集群搭建一套完整的監控體系,實現對集群狀態、資源使用、應用性能的全面監控與告警。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女