You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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:
    docker inspect grafana/grafana:latest | grep -A5 "User"
    
    官方Grafana镜像基本都使用UID=472。
  • Azure File Share的dir_mode和file_mode设为0777可确保足够读写权限,配合正确的UID/GID即可解决权限问题。

内容的提问来源于stack exchange,提问作者Taqi Rizvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 06:23:27