0


【K8S系列】如何监控集群CPU使用率并设置告警的分析与详细解决方案

在这里插入图片描述

监控 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-chartshelm 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-chartshelm 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-dashboardkubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
  3. 获取 Token:kubectl get secret -n kubernetes-dashboard |grep dashboard-admin-tokenkubectl 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.comhelm repo updatehelm 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 使用率并设置告警。根据您的需求和环境选择合适的方案,确保集群的健康和性能。定期审查和优化监控和告警配置,以适应变化的工作负载和需求。


本文转载自: https://blog.csdn.net/weixin_36755535/article/details/143675093
版权归原作者 颜淡慕潇 所有, 如有侵权,请联系我们删除。

“【K8S系列】如何监控集群CPU使用率并设置告警的分析与详细解决方案”的评论:

还没有评论