使用Azure File作为存储的Grafana部署异常排查请求

问题描述
现象
创建并启动包含grafana/grafana:6.4.4容器的Deployment后,容器立即关闭并进入重启循环。已通过Azure File Share将卷挂载至/var/lib/grafana目录。
预期结果
容器能够正常启动并保持运行状态,同时在挂载的卷中自动创建数据库文件。
当前配置
Deployment配置
apiVersion: apps/v1 kind: Deployment metadata: labels: app: grafana name: grafana namespace: devops spec: selector: matchLabels: app: grafana template: metadata: labels: app: grafana spec: securityContext: fsGroup: 472 supplementalGroups: - 0 containers: - name: grafana image: grafana/grafana:latest imagePullPolicy: IfNotPresent ports: - containerPort: 3000 name: http-grafana protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /login port: 3000 scheme: HTTP initialDelaySeconds: 10 periodSeconds: 30 successThreshold: 1 timeoutSeconds: 2 livenessProbe: failureThreshold: 3 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 tcpSocket: port: 3000 timeoutSeconds: 1 resources: requests: cpu: 250m memory: 750Mi volumeMounts: - mountPath: /var/lib/grafana name: grafana-pv volumes: - name: grafana-pv persistentVolumeClaim: claimName: grafana-pvc nodeSelector: kubernetes.io/os: linux
Azure File Share挂载选项
mountOptions: - dir_mode=0777 - file_mode=0777 - uid=1000 - gid=1000 - mfsymlinks - nobrl - cache=none
解决方案
问题出在权限不匹配:Grafana容器默认以grafana用户(UID=472)运行,但挂载选项指定了uid=1000和gid=1000,导致/var/lib/grafana目录的所有者与容器运行用户不一致,Grafana无法写入数据,启动失败。
修复步骤:
调整挂载选项的UID/GID
将挂载选项中的uid=1000和gid=1000改为uid=472和gid=472,匹配Grafana运行用户的ID:mountOptions: - dir_mode=0777 - file_mode=0777 - uid=472 - gid=472 - mfsymlinks - nobrl - cache=none验证SecurityContext配置
当前Deployment的securityContext已设置fsGroup: 472,该配置正确,会确保挂载卷的权限组为472,与Grafana用户组一致,无需修改。重启Deployment
应用修改后的PVC配置,然后重启Deployment:kubectl apply -f <你的PVC配置文件>.yaml kubectl rollout restart deployment grafana -n devops检查运行状态
等待部署完成后,查看容器状态:kubectl get pods -n devops -l app=grafana查看日志确认启动情况:
kubectl logs <grafana-pod名称> -n devops
额外说明
- 若使用
grafana/grafana:latest镜像,可通过以下命令确认运行用户UID:
官方Grafana镜像基本都使用UID=472。docker inspect grafana/grafana:latest | grep -A5 "User" - Azure File Share的
dir_mode和file_mode设为0777可确保足够读写权限,配合正确的UID/GID即可解决权限问题。
内容的提问来源于stack exchange,提问作者Taqi Rizvi
相关产品推荐
相关产品推荐

