[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已被挂载。