kube-prometheus数据持久化

前言

环境:centos7.9、kube-prometheus-release-0.10.zip
可参考这篇:https://blog.csdn.net/bzjoko/article/details/127213238
使用kube-prometheus安装的prometheus,默认是没有将数据持久化的,也是就是pod 重启数据就没了,本文将讲解kube-prometheus数据持久化。

kube-prometheus数据持久化

[root@matser manifests]# kubectl get pods -n monitoring 
NAME                                   READY   STATUS    RESTARTS   AGE
........................
prometheus-k8s-0                       2/2     Running   0          68m	#这个就是真正在跑prometheus-server的pod
prometheus-k8s-1                       2/2     Running   0          68m	#这个就是真正在跑prometheus-server的pod
[root@matser manifests]# 
#由此知prometheus的主服务其实就是使用pod启动的,其实就是prometheus-k8s-0、prometheus-k8s-1,而这种pod一看有序号就知道是sts创建的
[root@matser manifests]#  kubectl get sts -n monitoring 
NAME                READY   AGE
alertmanager-main   3/3     69m
prometheus-k8s      2/2     69m		#这个
[root@matser manifests]# 
# 但是我们查了一遍,发现当初创建kube-prometheus的yaml文件里面并没有创建StatefulSet资源,很奇怪。
# 后来百度发现,其实官方定义了一种叫做prometheus的资源,该资源创建了StatefulSet,如下:
 [root@matser manifests]#  kubectl get prometheus -n monitoring 
NAME   VERSION   REPLICAS   AGE
k8s    2.32.1    2          71m		#这种prometheus资源,由其创建的sts,创建k8s资源的文件是prometheus-prometheus.yaml
[root@matser manifests]# 
# prometheus-server 默认情况下没有配置数据持久化。所以我们需要做持久化存储。
#在线修改prometheus这种类型的资源,名称叫k8s(当然,你也可以修改prometheus-prometheus.yaml然后在apply亦可)
[root@matser manifests]#  kubectl  edit prometheus k8s  -n monitoring 
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
  creationTimestamp: "2022-11-16T08:50:10Z"
  generation: 2
..................
spec:
  alerting:
    alertmanagers:
    - apiVersion: v2
.....................
  podMonitorNamespaceSelector: {}
  podMonitorSelector: {}
  probeNamespaceSelector: {}
  probeSelector: {}
  replicas: 2
  resources:
    requests:
      memory: 400Mi
  retention: 15d		#加这个参数,表示prometheus数据保留的天数,默认会是1天而已
  ruleNamespaceSelector: {}
  ruleSelector: {}
  securityContext:
    fsGroup: 2000
    runAsNonRoot: true
    runAsUser: 1000
  serviceAccountName: prometheus-k8s
  serviceMonitorNamespaceSelector: {}
  serviceMonitorSelector: {}
  storage:										#加上下面这一段,一共9句
    volumeClaimTemplate:
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 50M
        storageClassName: nfs-storageclass		#指定已有的存储类名称
  version: 2.32.1
[root@matser manifests]# 

# 然后sts的pod会被创建创建,去到nfs服务器就会看到目录已经创建了现在pvc,pv都创建好了
[root@matser manifests]# kubectl  get pvc,pv -n monitoring 
NAME                                                       STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS       AGE
persistentvolumeclaim/prometheus-k8s-db-prometheus-k8s-0   Bound    pvc-34541364-5d8b-4f24-a3bf-de6c8670aad8   50M        RWO            nfs-storageclass   19m
persistentvolumeclaim/prometheus-k8s-db-prometheus-k8s-1   Bound    pvc-3079da5e-c43a-49b3-a234-1381cf8690c7   50M        RWO            nfs-storageclass   19m

NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                           STORAGECLASS       REASON   AGE
persistentvolume/pvc-3079da5e-c43a-49b3-a234-1381cf8690c7   50M        RWO            Retain           Bound    monitoring/prometheus-k8s-db-prometheus-k8s-1   nfs-storageclass            19m
persistentvolume/pvc-34541364-5d8b-4f24-a3bf-de6c8670aad8   50M        RWO            Retain           Bound    monitoring/prometheus-k8s-db-prometheus-k8s-0   nfs-storageclass            19m
[root@matser manifests]# 

自此,prometheus持久化数据配置完成了。

grafana的持久化

[root@matser redis-cluster]# kubectl  get pods,deploy -n monitoring 
NAME                                       READY   STATUS    RESTARTS   AGE
pod/grafana-78d8cfccff-vd8mn               1/1     Running   0          110m
....................

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/grafana               1/1     1            1           110m
............................
[root@matser redis-cluster]# 
#以上我们看到使用deployment部署了grafana,只有一个pod。

#手动创建grafana的pvc
[root@matser manifests]# vim grafana-pvc -oyaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana-pvc
  namespace: monitoring
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 100M
  storageClassName: nfs-storageclass
[root@matser manifests]# 
[root@matser manifests]# kubectl  apply  -f grafana-pvc.yaml 
persistentvolumeclaim/grafana-pvc created
[root@matser manifests]# kubectl  get pvc -n monitoring  | grep grafana
NAME                                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS       AGE
grafana-pvc                          Bound    pvc-6ad3f6a0-7ddf-47df-aa18-6a694b86fd00   100M       RWX            nfs-storageclass   6s
[root@matser manifests]# kubectl  get pv | grep grafana
pvc-6ad3f6a0-7ddf-47df-aa18-6a694b86fd00   100M       RWX            Retain           Bound    monitoring/grafana-pvc                          nfs-storageclass            49s
[root@matser manifests]# 
#编辑grafana的yaml文件,当然你可以在线edit它
[root@matser manifests]# vim grafana-deployment.yaml

      volumes:
#      - emptyDir: {}					#注释或删掉
#        name: grafana-storage			#注释或删掉
      - name: grafana-storage			#注意名字要和上面那句的名称相同
        persistentVolumeClaim:			
         claimName: grafana-pvc			#指定我们刚才创建的pvc
      - name: grafana-datasources		#这个原来的,不管
        secret:
          secretName: grafana-datasources


#为了固定grafana的登陆密码,可以添加环境变量
       readinessProbe:
          httpGet:
            path: /api/health
            port: http
        env:								#添加环境变量
        - name: GF_SECURITY_ADMIN_USER		#添加环境变量
          value: admin						#添加环境变量
        - name: GF_SECURITY_ADMIN_PASSWORD	#添加环境变量
          value: admin						#添加环境变量
        resources:
          limits:
            cpu: 200m
            memory: 200Mi

[root@matser manifests]# kubectl  replace  -f grafana-deployment.yaml

至此,grafana的数据持久化也做好了。可以看到后端的nfs服务器上已经有目录了。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值