先决条件
这里部署过程的前提是已经部署好storageclass,所以pv会根据pvc自动创建.
详情参考:k8s-StoargClass的使用-基于nfs_a volume that contains injected data from multiple-优快云博客
直接开始:
部署pvc
[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 也是我自己创建的,根据个人的情况自行更改即可.
[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的方式对外暴漏了.
[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
验证结果:
部署成功
接入数据源:
验证数据源可用性
设置中文字符集
添加一个Nodeport的模版
模板地址:Grafana dashboards | Grafana Labs
使用模板id导入模板:
如果电脑不能联网的话导入模板的时候直接下载json文件导入json即可.
验证监控面板
完成