使用Helm在k3s上安装Prometheus

我最近正在搭建一个用于学习的k3s集群,并尝试使用Helm安装Prometheus。我正在尝试使用kube-prometheus-stack,并且对kube-prometheus-stack和Prometheus Operator之间的关系不太了解。

1.软件构建

在AWS上建立了一个由4个实例组成的k3s集群的配置
Debian GNU/Linux 11
k3s版本v1.23.8+k3s1 (53f2d4e7)
go版本go1.17.5
Longhorn版本v1.3.0

2. 引入程序

我将添加prometheus-community的存储库。

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

获取values文件。

helm inspect values prometheus-community/kube-prometheus-stack > prometheus_values.yaml

根据您的偏好修改values文件(详见后文)。
修改values文件后,创建命名空间后执行helm install。

kubectl create ns prometheus
helm install prometheus -f .\prometheus_values.yaml prometheus-community/kube-prometheus-stack -n prometheus

3.values文件的更改点

这次,我试着做了以下更改。
首先,我取消了以下三处的注释,改用了longhorn来实现数据持久化。

alertmanager:
  alertmanagerSpec:
    storage:
      volumeClaimTemplate:
        spec:
          storageClassName: longhorn
          accessModes: ["ReadWriteOnce"]
          resources:
            requests:
              storage: 1Gi
          #selector: {}

prometheus:
  prometheusSpec:
    ## Prometheus StorageSpec for persistent data
    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/storage.md
    ##
    storageSpec:
    ## Using PersistentVolumeClaim
    ##
       volumeClaimTemplate:
         spec:
           storageClassName: longhorn
           accessModes: ["ReadWriteOnce"]
           resources:
             requests:
               storage: 1Gi
         #selector: {}

thanosRuler:
  thanosRulerSpec:
    storage:
      volumeClaimTemplate:
        spec:
          storageClassName: longhorn
          accessModes: ["ReadWriteOnce"]
          resources:
            requests:
              storage: 1Gi
        #selector: {}

另外,我們可以通過指定標籤(label)來選擇nodeSelector,以便將pod放置在合適的節點上。由於剛好我們指定了名為longhorn-node的節點,因此我們直接使用了它。但實際上,或許為了prometheus配置,我們應該提前創建一個不同的標籤(label)。

  nodeSelector:
    longhorn-node: 'true'

此外,在提取的values文件中并没有grafana和kube-state-metrics用于nodeSelector的选项。尽管如此,根据链接的问题所述,“如果添加了这些选项,它将正常工作”,因此我会进行添加。

grafana:
  #add nodeSelector
  nodeSelector:
    longhorn-node: 'true'

kube-state-metrics:
  #add nodeSelector
  nodeSelector:
    longhorn-node: 'true'

四、访问用户界面(UI)

スクリーンショット 2022-07-27 grafana.png
grafana:
  adminPassword: prom-operator

但是Lens很方便啊。

 

总结

我使用kube-prometheus-stack将Prometheus、Grafana等整套工具引入了k3s。为了数据持久化,我选择使用了Longhorn。同时,我还尝试使用nodeSelector来指定运行Prometheus等的节点。在界面访问方面,我尝试通过使用Lens来轻松实现。

然而,我对于 Prometheus 或者 k3s 中应该查看哪些参数并不清楚。看来我还需要更多的学习,作为一个初学者,我想以这样一句话来结束这篇文章。

广告
将在 10 秒后关闭
bannerAds