Kubernetes 集群管理:Helm 部署与监控告警配置
·
Kubernetes 集群管理:Helm 部署与监控告警配置
一、Helm 部署基础
Helm 是 Kubernetes 的包管理工具,通过 Chart 封装应用及其依赖。部署流程如下:
-
安装 Helm
# Linux/macOS curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash # 验证安装 helm version -
添加仓库与部署应用
# 添加官方仓库 helm repo add bitnami https://charts.bitnami.com/bitnami # 搜索 Chart(如部署 Nginx) helm search repo nginx # 部署应用 helm install my-nginx bitnami/nginx -
自定义配置 创建
values.yaml覆盖默认参数:# values.yaml replicaCount: 3 service: type: LoadBalancer部署时指定配置文件:
helm upgrade --install my-nginx -f values.yaml bitnami/nginx
二、监控告警配置
使用 Prometheus Operator + Alertmanager 实现监控告警体系。
1. 部署 Prometheus Stack
通过 Helm 部署监控全家桶(Prometheus + Grafana + Alertmanager):
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install kube-mon prometheus-community/kube-prometheus-stack
2. 告警规则配置
在 prometheus-rules.yaml 定义规则:
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: node-alerts
spec:
groups:
- name: node.rules
rules:
- alert: HighNodeCPU
expr: avg(rate(node_cpu_seconds_total{mode!="idle"}[5m])) by (instance) > 0.8
for: 10m
labels:
severity: critical
annotations:
summary: "高CPU使用率 (${{ $value }}%)"
description: "节点 {{ $labels.instance }} CPU 负载超过 80%"
应用规则:
kubectl apply -f prometheus-rules.yaml
3. Alertmanager 配置
创建 alertmanager-config.yaml 配置告警路由与接收器:
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
receiver: 'email-alerts'
receivers:
- name: 'email-alerts'
email_configs:
- to: 'admin@example.com'
from: 'alertmanager@cluster.local'
smarthost: 'smtp.example.com:587'
auth_username: 'user'
auth_password: 'password'
更新配置:
kubectl create secret generic alertmanager-config --from-file=alertmanager.yaml=alertmanager-config.yaml -n monitoring
helm upgrade kube-mon prometheus-community/kube-prometheus-stack --set alertmanager.configSecret=alertmanager-config
三、验证与调试
-
检查告警状态
kubectl get prometheusrules -n monitoring kubectl port-forward svc/kube-mon-grafana 3000:80 # 访问 http://localhost:3000 查看仪表盘 -
测试告警触发 模拟 CPU 负载(测试节点):
kubectl run stress --image=containerstack/alpine-stress --command -- stress -c 4
四、关键注意事项
-
资源预留
监控组件需预留资源,避免 OOM:# values.yaml 片段 prometheus: resources: limits: memory: 4Gi -
持久化存储
启用持久卷防止数据丢失:prometheus: persistence: enabled: true size: 50Gi -
告警收敛
使用group_interval抑制重复告警:route: group_interval: 5m
通过 Helm 标准化部署与配置管理,结合 Prometheus 生态实现全栈监控告警,可显著提升集群运维效率。实际部署时需根据业务需求调整告警阈值和接收渠道。
更多推荐
所有评论(0)