[OpenShift] 配置 Prometheus 的持久化卷 (PV) 的方式

首先

确认使用集群监控操作符(Cluster Monitoring Operator)来设置,并将OpenShift的Prometheus监控数据的存储位置更改为持久化卷(Persistent Volume)。

OCP的版本是4.5.4。

$ oc version 
Client Version: 4.5.4
Server Version: 4.5.4
Kubernetes Version: v1.18.3+012b3ec

检查 ConfigMap

要设置 Cluster Monitoring Operator,需要在 openshift-monitoring 命名空间中创建一个名为 cluster-monitoring-config 的 ConfigMap。这个 ConfigMap 在默认情况下是不存在的。

$ oc get configmap cluster-monitoring-config -n openshift-monitoring
Error from server (NotFound): configmaps "cluster-monitoring-config" not found

确认 Prometheus Pod

检查 Prometheus Pod,并查看 /prometheus 的文件系统。

$ oc get pod -n openshift-monitoring |grep prometheus
prometheus-adapter-6f55bb555b-lqr7d           1/1     Running   0          5d17h
prometheus-adapter-6f55bb555b-zt2l5           1/1     Running   0          5d17h
prometheus-k8s-0                              7/7     Running   0          16h
prometheus-k8s-1                              7/7     Running   0          16h
prometheus-operator-9f7877d6f-pr6zb           2/2     Running   1          5d17h
$ oc exec -it -n openshift-monitoring -c prometheus prometheus-k8s-0 -- /bin/bash
bash-4.2$
bash-4.2$ mount |grep prometheus
/dev/mapper/coreos-luks-root-nocrypt on /prometheus type xfs (rw,relatime,seclabel,attr2,inode64,prjquota)
・・・
bash-4.2$ exit

默认情况下,使用emptyDir来使用节点上的文件系统。

创建Configmap

本次使用NFS作为PV。StorageClass已经设置好。
值得注意的是,Prometheus推荐使用块存储而不是NFS。但因为这次只能准备NFS。

$ oc get storageclasses.storage.k8s.io 
NAME                    PROVISIONER               RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
nfs-storage (default)   nfs-storage-provisioner   Delete          Immediate           false                  183d

为了配置Configmap文件,我们准备了以下内容。

prometheusK8s:
  retention: 15d
  volumeClaimTemplate:
    spec:
      storageClassName: nfs-storage
      resources:
        requests:
          storage: 40Gi

使用这个文件来创建Configmap。

$ oc create configmap cluster-monitoring-config --from-file config.yaml=pv.yaml -n openshift-monitoring
configmap/cluster-monitoring-config created

确认

请稍等一下,我会确认一下 PVC 是否已经设置好。

$ oc get pvc -n openshift-monitoring 
NAME                                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
prometheus-k8s-db-prometheus-k8s-0   Bound    pvc-de9e9b7b-47c9-4055-889f-14d15d9f6e1c   40Gi       RWO            nfs-storage    9s
prometheus-k8s-db-prometheus-k8s-1   Bound    pvc-af01886e-b110-4d11-a8c5-e1f4db7057bb   40Gi       RWO            nfs-storage    9s

登录到容器,并检查挂载在/prometheus目录下的文件系统。

$ oc exec -it -n openshift-monitoring -c prometheus prometheus-k8s-0 -- /bin/bash
bash-4.2$ mount |grep prometheus
192.168.5.254:/exports/openshift-monitoring-prometheus-k8s-db-prometheus-k8s-0-pvc-de9e9b7b-47c9-4055-889f-14d15d9f6e1c/prometheus-db on /prometheus type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.5.254,mountvers=3,mountport=20048,mountproto=tcp,local_lock=all,addr=192.168.5.254)

可以确认NFS已被挂载。

广告
将在 10 秒后关闭
bannerAds