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

同一Pod中两容器共享Persistent Volume失败,请求排查解决

问题解决方法

核心问题分析

你遇到的挂载错误,主要是因为在Deployment里重复将同一个PVC定义成两个独立的Volume,同时hostPath类型的PV可能存在节点目录权限问题。同一Pod内多容器共享存储,只需要定义一次Volume即可。

步骤1:修正Deployment配置

将Deployment里的volumes部分合并为一个,两个容器统一挂载这个唯一的Volume。修改后的配置如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
  labels:
    app: app
spec:
  selector:
     matchLabels:
       app: app
  strategy:
     type: Recreate
  template:
     metadata:
       labels:
         app: app
     spec:
       containers:
         - name: lshome
           image: <local_registry>/container1:latest
           imagePullPolicy: Always
           volumeMounts:
              - name: app-config-storage
                mountPath: /home/app/config
         - name: wildfly
           image: <local_registry>/container2:latest
           imagePullPolicy: Always
           volumeMounts:
              - name: app-config-storage
                mountPath: /home/app/config                 
       volumes:
        - name: app-config-storage
          persistentVolumeClaim:
            claimName: app-pvc

步骤2:处理hostPath目录权限问题

由于你的PV使用hostPath,节点上的/mnt/data目录可能没有容器进程所需的读写权限,可通过以下两种方式解决:

  • 方式一:手动配置节点目录权限
    在Pod调度目标节点上执行命令:

    sudo mkdir -p /mnt/data
    # 若容器内运行用户UID为1000,建议设置对应权限而非777
    sudo chown 1000:1000 /mnt/data
    
  • 方式二:在Deployment中配置容器运行上下文
    在每个容器的配置段添加securityContext,指定与节点目录权限匹配的用户组:

    securityContext:
      runAsUser: 1000
      runAsGroup: 1000
      fsGroup: 1000
    

步骤3:验证部署

应用修改后的配置:

kubectl apply -f your-deployment.yaml

查看Pod状态:

kubectl get pods

若仍有错误,查看Pod详细事件定位问题:

kubectl describe pod <pod-name>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:33:09