Kubernetes 集群管理:Helm 部署与监控告警配置

一、Helm 部署基础

Helm 是 Kubernetes 的包管理工具,通过 Chart 封装应用及其依赖。部署流程如下:

  1. 安装 Helm

    # Linux/macOS
    curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
    
    # 验证安装
    helm version
    

  2. 添加仓库与部署应用

    # 添加官方仓库
    helm repo add bitnami https://charts.bitnami.com/bitnami
    
    # 搜索 Chart(如部署 Nginx)
    helm search repo nginx
    
    # 部署应用
    helm install my-nginx bitnami/nginx
    

  3. 自定义配置 创建 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


三、验证与调试
  1. 检查告警状态

    kubectl get prometheusrules -n monitoring
    kubectl port-forward svc/kube-mon-grafana 3000:80
    # 访问 http://localhost:3000 查看仪表盘
    

  2. 测试告警触发 模拟 CPU 负载(测试节点):

    kubectl run stress --image=containerstack/alpine-stress --command -- stress -c 4
    


四、关键注意事项
  1. 资源预留
    监控组件需预留资源,避免 OOM:

    # values.yaml 片段
    prometheus:
      resources:
        limits:
          memory: 4Gi
    

  2. 持久化存储
    启用持久卷防止数据丢失:

    prometheus:
      persistence:
        enabled: true
        size: 50Gi
    

  3. 告警收敛
    使用 group_interval 抑制重复告警:

    route:
      group_interval: 5m
    

通过 Helm 标准化部署与配置管理,结合 Prometheus 生态实现全栈监控告警,可显著提升集群运维效率。实际部署时需根据业务需求调整告警阈值和接收渠道。

更多推荐