跳到主要内容

使用 kube-prometheus-stack 搭建监控系统

概述

kube-prometheus-stack 是 Prometheus 生态中用于在 Kubernetes 部署 Prometheus 相关组件的 helm chart,涵盖 Prometheus Operator、Prometheus、Thanos、Grafana、node-exporter、kube-state-metrics 以及社区提供的各种 Grafana 面板等,本文介绍如何使用这个 chart 来搭建监控系统。

自定义配置的方法

由于 kube-prometheus-stack 这个 chart 非常庞大,还包含了很多其它依赖的 chart,配置也就非常多,如果我们要自定义的配置也很多,写到一个 values.yaml 中维护起来比较麻烦,我们可以拆成多个,在安装的时候指定多个配置文件就可以了:

  • 如果你直接用 helm 进行安装,可以指定多次 -f 参数:
    helm upgrade --install eg prom/kube-prometheus-stack -f image-values.yaml -f grafana-values.yaml
  • 如果你用 kustomize 引用该 chart 安装,可以用 additionalValuesFiles 指定多个 values 配置文件:
    kustomization.yaml
    helmCharts:
    - repo: https://prometheus-community.github.io/helm-charts
    name: kube-prometheus-stack
    releaseName: monitoring
    namespace: monitoring
    includeCRDs: true
    additionalValuesFiles:
    - image-values.yaml
    - grafana-values.yaml

    kustomize 内置到了 kubectl,可通过 kubectl apply -k . 进行安装。

国内环境替换镜像地址

kube-prometheus-stack 很多依赖镜像在 quay.ioregistry.k8s.io 这些国外的镜像仓库,国内环境拉取会失败,如果你的集群在国内,可以将国外的依赖镜像替换为 DockerHub 中相应的自动同步的 mirror 镜像:

国外的依赖镜像DockerHub 中自动同步的 mirror 镜像
quay.io/prometheus-operator/admission-webhookdocker.io/imroc/prometheus-operator-admission-webhook
quay.io/prometheus-operator/prometheus-operatordocker.io/imroc/prometheus-operator
quay.io/prometheus/node-exporterdocker.io/imroc/prometheus-node-exporter
quay.io/prometheus/alertmanagerdocker.io/imroc/prometheus-alertmanager
quay.io/prometheus/prometheusdocker.io/imroc/prometheus
quay.io/prometheus-operator/prometheus-config-reloaderdocker.io/imroc/prometheus-config-reloader
quay.io/thanos/thanosdocker.io/imroc/thanos
quay.io/brancz/kube-rbac-proxydocker.io/imroc/kube-rbac-proxy
quay.io/kiwigrid/k8s-sidecardocker.io/kiwigrid/k8s-sidecar
registry.k8s.io/kube-state-metrics/kube-state-metricsdocker.io/k8smirror/kube-state-metrics
registry.k8s.io/ingress-nginx/kube-webhook-certgendocker.io/k8smirror/ingress-nginx-kube-webhook-certgen
提示

以上 mirror 镜像均是长期自动同步的镜像,可放心使用和更新版本。

创建相应的 values 配置:

image-values.yaml
grafana:
sidecar:
image:
registry: docker.io/kiwigrid
repository: k8s-sidecar
alertmanager:
alertmanagerSpec:
image:
registry: docker.io
repository: imroc/prometheus-alertmanager
prometheus:
prometheusSpec:
image:
registry: docker.io
repository: imroc/prometheus
prometheusOperator:
image:
registry: docker.io
repository: imroc/prometheus-operator
admissionWebhooks:
deployment:
image:
registry: docker.io
repository: imroc/prometheus-operator-admission-webhook
patch:
image:
registry: docker.io
repository: k8smirror/ingress-nginx-kube-webhook-certgen
prometheusConfigReloader:
image:
registry: docker.io
repository: imroc/prometheus-config-reloader
thanosImage:
registry: docker.io
repository: imroc/thanos
thanosRuler:
thanosRulerSpec:
image:
registry: docker.io
repository: imroc/thanos
kube-state-metrics:
image:
registry: docker.io
repository: k8smirror/kube-state-metrics
prometheus-node-exporter:
image:
registry: docker.io
repository: imroc/prometheus-node-exporter
kubeRBACProxy:
image:
registry: quay.io
repository: brancz/kube-rbac-proxy

配置 Grafana

grafana 是 kube-prometheus-stack 中的一个 subchart,它所有的配置都放到 grafana 字段下面,如:

grafana-values.yaml
grafana:
adminUser: "admin"
adminPassword: "123456"

具体配置建议参考 在 TKE 上自建 Grafana