首先确认Kubernetes版本,这里我使用的版本为最新版
Grafana 12版本预览页面可以参考https://grafana.frps.cn
- namespace我这里统一放在tools目录

还需要确认StorageClass
root@k8s-master-01:~# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
dsm7-nfs-client (default) k8s-sigs.io/nfs-subdir-external-provisioner Delete Immediate false 6d17h
接下来创建PVC文件
root@k8s-master-01:~/prometheus/grafana# cat grafana-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: grafana-pvc
namespace: tools
labels:
app: grafana
spec:
storageClassName: "dsm7-nfs-client"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
创建完毕后请及时检查pvc是否是Bound状态
root@k8s-master-01:~/prometheus/grafana# kubectl get pvc -n tools
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
grafana-pvc Bound pvc-3fdb9723-ef93-4688-b55b-4d6458364132 50Gi RWO dsm7-nfs-client <unset> 21m
接下来创建Deployment
root@k8s-master-01:~/prometheus/grafana# cat grafana.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: grafana
namespace: tools
spec:
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
volumes:
- name: storage
persistentVolumeClaim:
claimName: grafana-pvc
securityContext:
runAsUser: 0
containers:
- name: grafana
image: dockerproxy.frps.fun/grafana/grafana:12.0.2
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3000
name: grafana
env:
- name: GF_SECURITY_ADMIN_USER
value: abcdocker
- name: GF_SECURITY_ADMIN_PASSWORD
value: i4t-com123
- name: GF_AUTH_ANONYMOUS_ENABLED
value: "true"
- name: GF_AUTH_ANONYMOUS_ORG_ROLE
value: "Viewer"
readinessProbe:
failureThreshold: 10
httpGet:
path: /api/health
port: 3000
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 30
livenessProbe:
failureThreshold: 3
httpGet:
path: /api/health
port: 3000
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources:
limits:
cpu: 150m
memory: 512Mi
requests:
cpu: 150m
memory: 512Mi
volumeMounts:
- mountPath: /var/lib/grafana
name: storage
- GF_SECURITY_ADMIN_USER #默认管理员用户名
- GF_SECURITY_ADMIN_PASSWORD #默认管理用户密码
- GF_AUTH_ANONYMOUS_ENABLED #是否开启匿名访问 (不需要就可以删除掉)
- GF_AUTH_ANONYMOUS_ORG_ROLE: Viewer #默认访问用户的权限(既然都不登录了,就设置为只读即可)
- dockerproxy.frps.fun/grafana/grafana:12.0.2 #本站提供加速镜像,也可以使用官方harbor
创建Service
apiVersion: v1
kind: Service
metadata:
name: grafana
namespace: tools
spec:
type: NodePort
ports:
- port: 3000
selector:
app: grafana
接下来查Grafana状态
root@k8s-master-01:~/prometheus/grafana# kubectl get all -n tools|grep grafana
pod/grafana-5c879dbbd8-2lnrx 1/1 Running 0 7m13s
service/grafana NodePort 10.96.3.169 <none> 3000:32006/TCP 45m
deployment.apps/grafana 1/1 1 1 33m
replicaset.apps/grafana-57d8d459db 0 0 0 33m
replicaset.apps/grafana-5c879dbbd8 1 1 1 7m13s
接下来就可以访问测试

Docker版本可以参考下面的文章配置











