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

RHEL环境Minikube中主机与Pod目录映射失效问题求助

问题描述

在RHEL系统的Minikube环境中,尝试将主机的配置文件、日志目录共享给Pod内应用,同时读取Pod生成的文件和日志。已创建并绑定PersistentVolume(PV)和PersistentVolumeClaim(PVC),Pod间能正常共享数据,但主机无法看到PV对应目录的数据,Pod也无法获取主机的配置文件。

尝试通过minikube start --mount-string="/home/tntuser/tnt-volumne:/mnt/tnt-volume"重启集群,但Minikube内的映射目录仍无内容。

配置文件
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: app-volume
spec:
  capacity:
    storage: 500Mi
  volumeMode: Filesystem # Mount volume into Pod as a directory.
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: "/mnt/app-volume" # Path to the directory this PV refers to.
  nodeAffinity: # nodeAffinity is required when using local volumes.
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - minikube # node-hostname
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: app-pvc
spec:
  volumeName: app-volume
  storageClassName: local-storage
  resources:
    requests:
      storage: 500Mi
  accessModes:
    - ReadWriteOnce
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-deployment
  namespace: default
spec:
  selector:
    matchLabels:
      app: app-deployment
  replicas: 2
  template:
    metadata:
      labels:
        app: app-deployment
    spec:
      containers:
        - name: app-docker-core
          image: 6767.dkr.ecr.eu-west-1.amazonaws.com/app-core:1.2
          imagePullPolicy: IfNotPresent
          env:
            - name: external_configuration_path
              value: "/usr/local/tomcat/ext-configuration"
          volumeMounts:
            - mountPath: "/usr/local/tomcat/logs"
              name: task-app-volume
              subPath: logs
            - mountPath: "/usr/local/tomcat/data"
              name: task-app-volume
              subPath: data
            - mountPath: "/usr/local/tomcat/ext-configuration"
              name: task-app-volume
              subPath: ext-configuration
          ports:
            - containerPort: 8443 # The port that the container is running on in the cluster
      volumes:
        - name: task-app-volume
          persistentVolumeClaim:
            claimName: app-pvc
      imagePullSecrets:
        - name: awsdockerreg
---
apiVersion: v1 # Kubernetes API version
kind: Service # Kubernetes resource kind we are creating
metadata: # Metadata of the resource kind we are creating
  name: app-k8s-internal-service
  namespace: default
spec:
  selector:
    app: app-deployment
  ports:
    - protocol: "TCP"
      port: 8443 # The port that the service is running on in the cluster
      targetPort: 8443 # The port exposed by the service
      nodePort: 30002
  type: LoadBalancer # type of the service.
PV和PVC状态
$ kubectl get pv
NAME         CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS    REASON   AGE
app-volume   500Mi      RWO            Delete           Bound    default/app-pvc   local-storage            21m
$ kubectl get pvc
NAME      STATUS   VOLUME       CAPACITY   ACCESS MODES   STORAGECLASS    AGE
app-pvc   Bound    app-volume   500Mi      RWO            local-storage   22m
问题排查与解决

1. 核心问题:路径不匹配

你启动Minikube时指定的挂载路径是/mnt/tnt-volume,但PV配置中使用的路径是/mnt/app-volume,两者不一致导致主机目录内容无法同步到PV对应的节点目录。

2. 修复步骤

步骤1:清理现有Minikube集群

minikube stop
minikube delete

步骤2:重新启动Minikube,挂载主机目录到PV指定的节点路径

minikube start --mount-string="/home/tntuser/tnt-volumne:/mnt/app-volume" --mount

注意:

  • --mount参数必须添加,确保挂载生效
  • 提前确认主机目录/home/tntuser/tnt-volumne存在,不存在则执行mkdir -p /home/tntuser/tnt-volumne创建

步骤3:验证Minikube节点内的挂载情况

进入Minikube节点查看挂载目录内容:

minikube ssh
ls /mnt/app-volume

若能看到主机目录下的文件,说明挂载成功。

步骤4:权限适配调整

  • 主机目录权限需允许Minikube进程访问:
chmod 755 /home/tntuser/tnt-volumne
  • Minikube节点内的挂载目录需匹配Pod运行用户的权限(以Tomcat常用的1000用户为例):
minikube ssh
chown -R 1000:1000 /mnt/app-volume

步骤5:验证Pod与主机的数据同步

  • 进入Pod检查是否能读取主机配置:
kubectl exec -it $(kubectl get pods -l app=app-deployment -o jsonpath='{.items[0].metadata.name}') -- ls /usr/local/tomcat/ext-configuration
  • 在主机目录写入测试文件,查看Pod内是否能读取;在Pod内生成文件,查看主机目录是否同步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:34:58