在 Kubernetes 集群中安装 kube-prometheus-stack

kube-prometheus-stack 是一个完整的 Kubernetes 监控解决方案,集成了 Prometheus、Alertmanager、Grafana 和多个 Kubernetes 监控组件。

1. 前置条件

在安装 kube-prometheus-stack 之前,请确保:

  • 你已经安装了 Kubernetes 集群(建议 v1.20+)。

  • 你已经安装了 kubectl 并能够连接到集群。

  • 你已经安装了 Helm(建议 v3+)。

2. 添加 Helm 仓库

首先,添加 prometheus-community Helm 仓库,并更新本地索引:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

3. 创建命名空间

建议将 kube-prometheus-stack 组件安装到单独的 monitoring 命名空间中:

kubectl create namespace monitoring

4. 安装 kube-prometheus-stack

使用 Helm 安装 kube-prometheus-stack,并自定义一些参数:

helm install prometheus-stack prometheus-community/kube-prometheus-stack \
  --namespace monitoring \
  --set grafana.enabled=true \
  --set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false

或者,如果你已经下载了 kube-prometheus-stack-70.3.0.tgz,可以使用手动安装方式:

helm install prometheus ./kube-prometheus-stack-70.3.0.tgz --namespace monitoring --create-namespace

安装成功后,你可以使用以下命令查看相关的 Pod:

kubectl get pods -n monitoring

5. 访问 Grafana 仪表盘

默认情况下,Grafana 在 kube-prometheus-stack 中会以 ClusterIP 方式暴露。你可以使用 port-forward 访问它:

kubectl port-forward -n monitoring svc/prometheus-stack-grafana 3000:80

然后,在浏览器中访问 http://localhost:3000

默认的 Grafana 登录凭据:

  • 用户名:admin

  • 密码:可以使用以下命令获取:

    kubectl get secret -n monitoring prometheus-stack-grafana -o jsonpath="{.data.admin-password}" | base64 --decode

6. 访问 Prometheus 和 Alertmanager

同样可以使用 port-forward 访问 Prometheus 和 Alertmanager:

kubectl port-forward -n monitoring svc/prometheus-stack-prometheus 9090:9090
kubectl port-forward -n monitoring svc/prometheus-stack-alertmanager 9093:9093

分别在浏览器中访问:

  • Prometheus: http://localhost:9090

  • Alertmanager: http://localhost:9093

7. 配置持久化存储(可选)

如果希望 Prometheus 使用持久化存储,可以修改 values.yaml 并启用 PVC:

prometheus:
  prometheusSpec:
    storageSpec:
      volumeClaimTemplate:
        spec:
          accessModes: ["ReadWriteOnce"]
          resources:
            requests:
              storage: 50Gi

然后使用 helm upgrade 进行更新:

helm upgrade prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring -f values.yaml

8. 配置 Alertmanager 告警规则(可选)

kube-prometheus-stack 自带一些默认的告警规则,你可以修改 values.yaml 并自定义 Alertmanager 规则,例如:

alertmanager:
  config:
    global:
      resolve_timeout: 5m
    route:
      receiver: 'slack-notifications'
    receivers:
      - name: 'slack-notifications'
        slack_configs:
          - channel: '#alerts'
            send_resolved: true
            api_url: 'https://hooks.slack.com/services/xxx/yyy/zzz'

然后升级配置:

helm upgrade prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring -f values.yaml

9. 卸载 kube-prometheus-stack

如果你需要卸载 kube-prometheus-stack,可以使用以下命令:

helm uninstall prometheus-stack -n monitoring
kubectl delete namespace monitoring

10. 总结

kube-prometheus-stack 提供了一整套 Kubernetes 监控工具,包括 Prometheus、Alertmanager 和 Grafana。通过 Helm 可以快速安装并进行自定义配置,提高 Kubernetes 集群的可观测性!

你可能感兴趣的:(k8s,kubernetes,容器)