先决条件
这里部署过程的前提是已经部署好storageclass,所以pv会根据pvc自动创建.
详情参考:k8s-StoargClass的使用-基于nfs_a volume that contains injected data from multiple-CSDN博客
直接开始:
部署pvc
Go
[root@module /zpf/grafana]$cat pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim #指定类型
metadata:
name: grafana-pvc #指定pvc的名称
spec:
storageClassName: "managed-nfs-storage" #这里指定的名称就是上面创建的sc的名称,否则是无法创建成功的
accessModes:
- ReadWriteMany #读写权限
resources:
requests:
storage: 20Gi #分配大小
部署deploy:
注意这里的容器镜像是我自己仓库里面的镜像,
imagePullSecrets 也是我自己创建的,根据个人的情况自行更改即可.
Go
[root@module /zpf/grafana]$cat deploy-grafana.yml
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
app: grafana
name: grafana
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
imagePullSecrets:
- name: aliyun-docker-images-registry
securityContext:
runAsUser: 0
containers:
- name: grafana
image: registry.cn-beijing.aliyuncs.com/scorpio/grafana-cn:v9.4.0
imagePullPolicy: IfNotPresent
env:
- name: GF_AUTH_BASIC_ENABLED
value: "true"
- name: GF_AUTH_ANONYMOUS_ENABLED
value: "false"
readinessProbe:
httpGet:
path: /login
port: 3000
volumeMounts:
- mountPath: /var/lib/grafana
name: grafana-data-pvc
ports:
- containerPort: 3000
protocol: TCP
volumes:
- name: grafana-data-pvc
persistentVolumeClaim:
claimName: grafana-pvc
创建svc:
因为要在集群外访问服务,所以这里就直接使用了Nodeport的方式对外暴漏了.
Go
[root@module /zpf/grafana]$cat svc-grafana.yml
kind: Service
apiVersion: v1
metadata:
labels:
app: grafana
name: grafana-service
spec:
ports:
- port: 3000
targetPort: 3000
nodePort: 30030
selector:
app: grafana
type: NodePort
验证结果:
部署成功

接入数据源:

验证数据源可用性

完成