监控 Kubernetes 集群的 CPU
使用率并设置告警是确保集群健康和性能的关键。以下是几种常见的方案,每种方案的具体步骤都进行了详细说明。
方案 1: 使用 Prometheus 和 Grafana
1. 安装 Prometheus 和 Grafana
1.1 使用 Helm 安装 Prometheus
- 添加 Helm 仓库:
helm repo add prometheus-community https://prometheus-community.github.io/helm-chartshelm repo update
- 安装 Prometheus:
helm install prometheus prometheus-community/prometheus
1.2 使用 Helm 安装 Grafana
- 添加 Grafana 仓库:
helm repo add grafana https://grafana.github.io/helm-chartshelm repo update
- 安装 Grafana:
helm install grafana grafana/grafana
- 获取 Grafana 的访问凭证:
kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}"| base64 --decode ;echo
2. 配置 Prometheus 监控 Kubernetes 指标
2.1 配置 Prometheus 采集指标
- 编辑 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
- 重启 Prometheus: 更新配置后,重启 Prometheus 以使更改生效。
3. 设置告警规则
3.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."
- 更新 Prometheus 配置: 在
prometheus.yml
中的rule_files
字段添加刚才创建的告警规则文件路径。示例:rule_files:-"alert_rules.yml"
- 重启 Prometheus: 使新的告警规则生效。
3.2 配置 Alertmanager
- 安装 Alertmanager: 如果还没有安装 Alertmanager,可以通过 Helm 安装:
helm install alertmanager prometheus-community/alertmanager
- 配置 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 }}"
- 重启 Alertmanager: 使配置生效。
4. 在 Grafana 中可视化监控数据
- 访问 Grafana: 使用以下命令获取 Grafana 服务的外部访问地址:
kubectl get svc grafana
- 登录 Grafana: 使用 admin 用户和上一步获取的密码登录。
- 添加 Prometheus 数据源:- 在 Grafana 中,导航到配置 > 数据源 > 添加数据源。- 选择 Prometheus,输入 Prometheus 服务的 URL(通常是
http://prometheus-server
),然后保存。 - 创建仪表板:- 使用 Grafana 的图形编辑器创建自定义仪表板,监控 CPU 使用率和其他指标。
方案 2: 使用 Kubernetes Dashboard
1. 安装 Kubernetes Dashboard
- 部署 Kubernetes Dashboard:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
- 获取访问凭证: 创建一个服务账户并赋予其适当的权限:
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboardkubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
- 获取 Token:
kubectl get secret -n kubernetes-dashboard |grep dashboard-admin-tokenkubectl describe secret <secret-name> -n kubernetes-dashboard
2. 访问 Dashboard
- 启动代理:
kubectl proxy
- 访问 Dashboard: 打开浏览器,访问
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
- 登录: 使用上一步获取的 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 集群监控。
- 注册 Datadog 账户并获取 API 密钥。
- 部署 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>
- 配置告警: 在 Datadog 的用户界面中,您可以设置 CPU 使用率的告警,选择阈值和通知方式。
2. 使用其他云监控服务
如 AWS CloudWatch、Azure Monitor 或 Google Cloud Monitoring,这些服务通常提供 Kubernetes 集群的监控和告警功能。
- 根据云服务提供商的文档设置监控。
- 配置告警: 根据您的需求设置 CPU 使用率告警。
总结
以上方案涵盖了使用 Prometheus、Grafana、Kubernetes Dashboard、Metrics API 和第三方监控工具等多种方式来监控 Kubernetes 集群的 CPU 使用率并设置告警。根据您的需求和环境选择合适的方案,确保集群的健康和性能。定期审查和优化监控和告警配置,以适应变化的工作负载和需求。
版权归原作者 颜淡慕潇 所有, 如有侵权,请联系我们删除。