kubernetes部署kube-prometheus

Posted by 梁远鹏 on 2021-04-06 | 阅读 |,阅读约 2 分钟

TOC

如何部署kube-prometheus

本文使用https://github.com/prometheus-operator/kube-prometheus进行部署kube-prometheus

部署的prometheus版本为2.25.0

开始部署kube-prometheus

下载仓库

git clone https://github.com.cnpmjs.org/prometheus-operator/kube-prometheus.git

部署CRD

cd kube-prometheus
kubectl create -f manifests/setup
until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
kubectl create -f manifests/

观察部署情况

$ watch kubectl get po -n monitoring
NAME                                   READY   STATUS              RESTARTS   AGE
alertmanager-main-0                    0/2     ContainerCreating   0          33s
alertmanager-main-1                    0/2     ContainerCreating   0          33s
alertmanager-main-2                    0/2     ContainerCreating   0          33s
blackbox-exporter-56bc9d4987-qswrj     3/3     Running             0          44s
grafana-c7b7b49b7-kl5c7                0/1     Running             0          37s
kube-state-metrics-79b955f5d6-kwwl6    0/3     ContainerCreating   0          35s
node-exporter-pwkzt                    2/2     Running             0          32s
node-exporter-x9vt9                    2/2     Running             0          31s
prometheus-adapter-85797fb6c8-27qsd    0/1     ContainerCreating   0          22s
prometheus-k8s-0                       0/2     ContainerCreating   0          16s
prometheus-k8s-1                       0/2     ContainerCreating   0          16s
prometheus-operator-5c4b65f789-mgzpn   2/2     Running             0          49s

可以看到等一会后所有pod就部署完成了.

简单体验部署后的效果

查看prometheus前端页面

kubectl --namespace monitoring port-forward svc/prometheus-k8s 9090 --address 0.0.0.0

然后在页面打开http://宿主IP:9090 进入到prometheus页面
prometheus

查看Grafana页面

kubectl --namespace monitoring port-forward svc/grafana 3000 --address 0.0.0.0

在页面打开http://宿主IP:3000 进入到grafana页面
grafana

查看AlertManager

kubectl --namespace monitoring port-forward svc/alertmanager-main 9093 --address 0.0.0.0

在页面打开http://宿主IP:9093 进入到alertmanager页面
grafana

自定义修改kube-prometheus参数

本文使用yaml文件的方式部署,所以修改参数都可以在yaml文件中进行修改.

默认kube-prometheus存储数据是24h并且没有持久化,如果pod重启了数据就没有了.

这里演示一下修改存储的时间:

vim manifests/prometheus-prometheus.yaml

在spec下加上retention: 2w就可以将数据存储为两周.

同时下面的示例也加了一个prometheus远程写请求的配置,将数据写到支持prometheus远程写API的一个地址.

spec:
  retention: 2w
  remoteWrite:
    - name: remotexx
      url: http://xxx/api/v1/write

如果需要将数据持久化可以使用storageClass,一般我是习惯使用longhorn,以下面伪配置为例:

spec:
  storage:
    volumeClaimTemplate:
      spec:
        storageClassName: longhorn

上述数据持久化配置可能不完整,仅供参考.

总结

总的来说kube-prometheus需要注意的问题是,默认存储24h并且没有持久化,千万记得修改这部分配置,否则可能会引发数据丢失问题.

本文的部署步骤基本上就是按照官方文档操作了一遍,

注意

随着时间的推移和kube-prometheus的演进,按照本文使用最新版本部署可能会出现部署失败的问题,归根结底是因为kube-prometheus最新版本部署内容或步骤发生了一些变化,因此建议首先阅读官方文档.

值得一看

我正在持续更新Prometheus新版本特性讲解系列文章,欢迎关注以及交流

微信公众号

扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。

wechat-qrcode