后docker 镜像源时代的k8s的Prometheus Stack安装教程

420 阅读3分钟

引言

笔者编写论文系统时需要对测试环境的 k8s 集群进行监控,就主流监控手段而言,主要有一下几个组件:

  1. kube-state-metrics(官方的 k8s 集群性能指标插件,需要额外安装,即 kubectl top 命令的数据来源,下文简称 ksm)
  2. prometheus (云原生时代监控系统的事实标准,同时启发了victoriametrics等一众后起之秀)
  3. Grafana (比 prometheus 还要事实标准的可视化平台)

笔者在单独安装了 ksm 之后,发现还需要单独按照 prometheus、配置监控规则、安装 Grafana...那么有没有一种快捷方式,可以一键安装这些基础设施呢?

有 k8s 相关经验的朋友肯定会想到用 helm 来打包解决这个问题,有没有社区的大佬们已经为我们开发好了呢?

kube-prometheus-stack 就是一个这样的 helm 包,提供对 k8s 集群的一键监控服务。这个出于众所周知的原因,我们想要部署 这个 helm 文件需要进行一些~~特殊处理 ~~,下文我们会进行手把手的教学

按照流程

前置准备

  1. helm 命令行安装
  2. k8s 集群

首先让我们添加相关helm仓库

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

之后来到重点,在我们install 之后,会遇到很多拉不下的镜像,可以通过一下方式解决: 首先 install 命令,看有哪些镜像拉不下来

helm install  dfsf prometheus-community/kube-prometheus-stack --namespace monitoring

之后通过 kubectl describe命令查看具体的问题pod(注意:stack会首先启动一个job,如果读者在上一步指令遇到等待条件超时的报错请kubectl get all -n monitoring查看具体问题pod)

以下图的 Grafana为例子,知道了具体的镜像名之后,我们进入docker.aityp.com/ ,在这感谢大佬的无偿付出 image.png 我们可以在这里找到具体镜像 image.png 如果没有找到相关镜像,请点击添加镜像按钮,并输入相关信息 image.png

之后按下面的格式整理,我们命名为 image-values.yaml,这里读者可以直接复用:

grafana:
  image:
    registry: swr.cn-north-4.myhuaweicloud.com
    repository: ddn-k8s/docker.io/grafana/grafana
  sidecar:
    image:
      registry: swr.cn-north-4.myhuaweicloud.com
      repository: ddn-k8s/docker.io/kiwigrid/k8s-sidecar
alertmanager:
  alertmanagerSpec:
    image:
      registry: swr.cn-north-4.myhuaweicloud.com
      repository: ddn-k8s/docker.io/rancher/mirrored-prometheus-alertmanager
prometheus:
  prometheusSpec:
    image:
      registry: swr.cn-north-4.myhuaweicloud.com
      repository: ddn-k8s/quay.io/prometheus/prometheus
prometheusOperator:
  image:
    registry: swr.cn-north-4.myhuaweicloud.com
    repository: ddn-k8s/docker.io/imroc/prometheus-operator
  admissionWebhooks:
    deployment:
      image:
        registry: docker.io
        repository: imroc/prometheus-operator-admission-webhook
    patch:
      image:
        registry: swr.cn-north-4.myhuaweicloud.com
        repository: ddn-k8s/registry.k8s.io/ingress-nginx/kube-webhook-certgen
  prometheusConfigReloader:
    image:
      registry: swr.cn-north-4.myhuaweicloud.com
      repository: ddn-k8s/docker.io/imroc/prometheus-config-reloader
  thanosImage:
    registry: swr.cn-north-4.myhuaweicloud.com
    repository: ddn-k8s/docker.io/imroc/thanos
thanosRuler:
  thanosRulerSpec:
    image:
      registry: swr.cn-north-4.myhuaweicloud.com
      repository: ddn-k8s/docker.io/imroc/thanos
kube-state-metrics:
  image:
    registry: swr.cn-north-4.myhuaweicloud.com
    repository: ddn-k8s/registry.k8s.io/kube-state-metrics/kube-state-metrics
prometheus-node-exporter:
  image:
    registry: swr.cn-north-4.myhuaweicloud.com
    repository: ddn-k8s/quay.io/prometheus/node-exporter
  kubeRBACProxy:
    image:
      registry: swr.cn-north-4.myhuaweicloud.com
      repository: ddn-k8s/quay.io/brancz/kube-rbac-proxy

我们可以同时针对 grafana 的配置编辑文件grafana-values.yaml

grafana:
  adminUser: "admin"
  adminPassword: "123456"

之后可以

 helm uninstall dfsf -n monitoring
 helm install  moi prometheus-community/kube-prometheus-stack -f image-values.yaml -f grafana-values.yaml --namespace monitoring

成功的截图如下

image.png

测试方式

之后我们可以将 monitoring 命名空间下的 svc 改为NodePort即可(笔者这里已经改过,仅测试用途!)

image.png 得到 grafana界面,用户密码即为grafana-values配置的信息

image.png

可以看到监控模板默认如下,相当nice 相当nb image.png