問題: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