引言
笔者编写论文系统时需要对测试环境的 k8s 集群进行监控,就主流监控手段而言,主要有一下几个组件:
- kube-state-metrics(官方的 k8s 集群性能指标插件,需要额外安装,即
kubectl top命令的数据来源,下文简称 ksm) - prometheus (云原生时代监控系统的事实标准,同时启发了
victoriametrics等一众后起之秀) - Grafana (比 prometheus 还要事实标准的可视化平台)
笔者在单独安装了 ksm 之后,发现还需要单独按照 prometheus、配置监控规则、安装 Grafana...那么有没有一种快捷方式,可以一键安装这些基础设施呢?
有 k8s 相关经验的朋友肯定会想到用 helm 来打包解决这个问题,有没有社区的大佬们已经为我们开发好了呢?
kube-prometheus-stack 就是一个这样的 helm 包,提供对 k8s 集群的一键监控服务。这个出于众所周知的原因,我们想要部署 这个 helm 文件需要进行一些~~特殊处理 ~~,下文我们会进行手把手的教学
按照流程
前置准备
- helm 命令行安装
- 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-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
成功的截图如下
测试方式
之后我们可以将 monitoring 命名空间下的 svc 改为NodePort即可(笔者这里已经改过,仅测试用途!)
得到 grafana界面,用户密码即为grafana-values配置的信息
可以看到监控模板默认如下,相当nice 相当nb