在这里插入图片描述

监控 Kubernetes 集群的 CPU
使用率并设置告警是确保集群健康和性能的关键。以下是几种常见的方案,每种方案的具体步骤都进行了详细说明。

方案 1: 使用 Prometheus 和 Grafana

1. 安装 Prometheus 和 Grafana

1.1 使用 Helm 安装 Prometheus
  1. 添加 Helm 仓库:

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    helm repo update
    
  2. 安装 Prometheus:

    helm install prometheus prometheus-community/prometheus
    
1.2 使用 Helm 安装 Grafana
  1. 添加 Grafana 仓库:

    helm repo add grafana https://grafana.github.io/helm-charts
    helm repo update
    
  2. 安装 Grafana:

    helm install grafana grafana/grafana
    
  3. 获取 Grafana 的访问凭证:

    kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
    

2. 配置 Prometheus 监控 Kubernetes 指标

2.1 配置 Prometheus 采集指标
  1. 编辑 Prometheus 配置:
    prometheus.yml 文件中,确保 Kubernetes API 的服务发现设置正确。

    示例配置:

    scrape_configs:
      - job_name: kubernetes-nodes
        kubernetes_sd_configs:
          - role: node
        relabel_configs:
          - source_labels: [__meta_kubernetes_node_name]
            action: keep
            regex: .*
      - job_name: kubernetes-pods
        kubernetes_sd_configs:
          - role: pod
        relabel_configs:
          - source_labels: [__meta_kubernetes_namespace]
            action: keep
            regex: default
    
  2. 重启 Prometheus:
    更新配置后,重启 Prometheus 以使更改生效。

3. 设置告警规则

3.1 创建告警规则
  1. 创建告警规则文件:
    创建一个 YAML 文件,例如 alert_rules.yml,定义 CPU 使用率的告警条件。

    示例告警规则:

    groups:
    - name: cpu-alerts
      rules:
      - alert: HighCpuUsage
        expr: sum(rate(container_cpu_usage_seconds_total{job="kubelet"}[5m])) by (instance) > 0.8
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "High CPU usage detected"
          description: "CPU usage is above 80% for more than 5 minutes."
    
  2. 更新 Prometheus 配置:
    prometheus.yml 中的 rule_files 字段添加刚才创建的告警规则文件路径。

    示例:

    rule_files:
      - "alert_rules.yml"
    
  3. 重启 Prometheus:
    使新的告警规则生效。

3.2 配置 Alertmanager
  1. 安装 Alertmanager:
    如果还没有安装 Alertmanager,可以通过 Helm 安装:

    helm install alertmanager prometheus-community/alertmanager
    
  2. 配置 Alertmanager 通知:
    编辑 Alertmanager 的配置文件 alertmanager.yml,设置通知渠道。

    示例配置:

    global:
      slack_api_url: 'https://hooks.slack.com/services/XXXX/XXXX/XXXX'
    route:
      group_by: ['alertname']
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 3h
      receiver: 'slack'
    
    receivers:
    - name: 'slack'
      slack_configs:
      - channel: '#alerts'
        text: "Alert: {{ .CommonLabels.alert }}\nDescription: {{ .CommonAnnotations.description }}"
    
  3. 重启 Alertmanager:
    使配置生效。

4. 在 Grafana 中可视化监控数据

  1. 访问 Grafana:
    使用以下命令获取 Grafana 服务的外部访问地址:

    kubectl get svc grafana
    
  2. 登录 Grafana:
    使用 admin 用户和上一步获取的密码登录。

  3. 添加 Prometheus 数据源:

    • 在 Grafana 中,导航到配置 > 数据源 > 添加数据源。
    • 选择 Prometheus,输入 Prometheus 服务的 URL(通常是 http://prometheus-server),然后保存。
  4. 创建仪表板:

    • 使用 Grafana 的图形编辑器创建自定义仪表板,监控 CPU 使用率和其他指标。

方案 2: 使用 Kubernetes Dashboard

1. 安装 Kubernetes Dashboard

  1. 部署 Kubernetes Dashboard:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
    
  2. 获取访问凭证:
    创建一个服务账户并赋予其适当的权限:

    kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
    kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
    
  3. 获取 Token:

    kubectl get secret -n kubernetes-dashboard | grep dashboard-admin-token
    kubectl describe secret <secret-name> -n kubernetes-dashboard
    

2. 访问 Dashboard

  1. 启动代理:

    kubectl proxy
    
  2. 访问 Dashboard:
    打开浏览器,访问 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

  3. 登录:
    使用上一步获取的 Token 登录。

3. 监控 CPU 使用率

在 Dashboard 中,您可以查看各个 Pod 的 CPU 和内存使用情况,并根据需要设置告警。

方案 3: 使用 Kube Metrics API

Kubernetes Metrics API 提供了 Pod 和节点的资源使用情况,可以通过直接调用 API 来获取数据。

1. 确保 Metrics Server 已安装

如果您尚未安装 Metrics Server,可以使用以下命令安装:

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

2. 查询 Pod 资源使用情况

使用以下命令获取所有 Pod 的 CPU 和内存使用情况:

kubectl top pods --all-namespaces

3. 设置告警

要设置基于 Metrics API 的告警,您可以结合 Prometheus 和 Alertmanager 来实现。请参照方案 1 中的告警设置步骤。

方案 4: 使用第三方监控工具

1. 使用 Datadog

Datadog 是一个流行的监控和分析平台,提供 Kubernetes 集群监控。

  1. 注册 Datadog 账户并获取 API 密钥。

  2. 部署 Datadog Agent:
    使用 Helm 安装 Datadog Agent:

    helm repo add datadog https://helm.datadoghq.com
    helm repo update
    helm install datadog datadog/datadog --set api.key=<YOUR_DATADOG_API_KEY>
    
  3. 配置告警:
    在 Datadog 的用户界面中,您可以设置 CPU 使用率的告警,选择阈值和通知方式。

2. 使用其他云监控服务

如 AWS CloudWatch、Azure Monitor 或 Google Cloud Monitoring,这些服务通常提供 Kubernetes 集群的监控和告警功能。

  1. 根据云服务提供商的文档设置监控。
  2. 配置告警:
    根据您的需求设置 CPU 使用率告警。

总结

以上方案涵盖了使用 Prometheus、Grafana、Kubernetes Dashboard、Metrics API 和第三方监控工具等多种方式来监控 Kubernetes 集群的 CPU 使用率并设置告警。根据您的需求和环境选择合适的方案,确保集群的健康和性能。定期审查和优化监控和告警配置,以适应变化的工作负载和需求。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部