k8s grafana數據持久化

問題:k8s搭建的grafana容器只要一重啓,配置的dashboard,添加的用戶等就會重置,從而得出,grafana沒有數據持久化。
解決
1.先在集羣建立持久花存儲pvc
然後掛在到容器/var目錄

	 volumeMounts:
     - mountPath: /var
    	 name: grafana-storage
    volumes:
    - name: grafana-storage
   		 persistentVolumeClaim:
      		claimName: grafana

網上資料好多都是這麼做的,然並卵,並沒什麼作用,重啓依然失去配置。

2.參考好多資料,發現需要配套mysql數據考實現grafana數據持久化。
mysql安裝可通過helm search mysql使用helm安裝,mysql要掛持久化存儲,這裏就不多介紹了。
下面會詳細介紹grafana怎麼配置mysql數據庫
首先要先在mysql裏新建grafana的數據庫,創建 參考mysql sql語法
其次:
第一步:通過k8s集羣查出舊有grafana容器所在的節點,找到那個容器,把grafana.ini導出到服務器上。

	docker cp ad7fb5f9ef38:/etc/grafana/grafana.ini  /lyf/

第二步:編輯/lyf/grafana.ini文件,修改database選項

	[database]
	\# You can configure the database connection by specifying type, host, name, user and password
	\# as seperate properties or as on string using the url propertie.

	\# Either "mysql", "postgres" or "sqlite3", it's your choice
	type = mysql
	host = mysql.default:3306
	name = grafana
	user = root
	\# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
	password = root.123

修改完配置文件,保存。然後執行下面的命令創建configmap
創建configmap grafana-etc

	kubectl create configmap "grafana-etc" --from-file=/lyf/grafana.ini --namespace=kube-system

第三步:創建grafana deployment
[root@k8s01 prometheus]# cat grafana-deploy.yaml

	apiVersion: extensions/v1beta1
	kind: Deployment
	metadata:
	  annotations:
	    deployment.kubernetes.io/revision: "15"
	  labels:
	    k8s-app: grafana
	    task: monitoring
	  name: monitoring-grafana
	  namespace: kube-system
	spec:
	  progressDeadlineSeconds: 600
	  replicas: 1
	  revisionHistoryLimit: 10
	  selector:
	    matchLabels:
	      k8s-app: grafana
	      task: monitoring
	  strategy:
	    rollingUpdate:
	      maxSurge: 1
	      maxUnavailable: 1
	    type: RollingUpdate
	  template:
	    metadata:
	      labels:
	        k8s-app: grafana
	        task: monitoring
	    spec:
	      containers:
	      - env:
	        - name: INFLUXDB_HOST
	          value: monitoring-influxdb.kube-system
	        - name: GF_SERVER_HTTP_PORT
	          value: "3000"
	        - name: GF_AUTH_BASIC_ENABLED
	          value: "false"
	        - name: GF_AUTH_ANONYMOUS_ENABLED
	          value: "false"
	        - name: GF_AUTH_ANONYMOUS_ORG_ROLE
	          value: Admin
	        - name: GF_SERVER_ROOT_URL
	          value: /
	        image: registry.gcloud.srcb.com/registry.cn-hangzhou.aliyuncs.com/acs/grafana:5.0.4-gpu-monitoring
	        imagePullPolicy: IfNotPresent
	        name: grafana
	        ports:
	        - containerPort: 3000
	          protocol: TCP
	        resources: {}
	        terminationMessagePath: /dev/termination-log
	        terminationMessagePolicy: File
	        volumeMounts:
	        - mountPath: /etc/ssl/certs
	          name: ca-certificates
	          readOnly: true
	        - mountPath: /var
	          name: grafana-storage
	        - mountPath: /etc/grafana/
	          name: grafana-etc-volume
	      dnsPolicy: ClusterFirst
	      nodeSelector:
	        role: master
	      restartPolicy: Always
	      schedulerName: default-scheduler
	      securityContext: {}
	      terminationGracePeriodSeconds: 30
	      volumes:
	      - hostPath:
	          path: /etc/ssl/certs
	          type: ""
	        name: ca-certificates
	      - name: grafana-storage
	        persistentVolumeClaim:
	          claimName: grafana
	      - configMap:
	          defaultMode: 420
	          items:
	          - key: grafana.ini
	            path: grafana.ini
	          name: grafana-etc
	        name: grafana-etc-volume

小結:加mysql配置的grafana容器重啓配置不會丟失。
參考:https://blog.csdn.net/wenwst/article/details/76624019

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章