本地kind集群无法挂载本地主机路径 需挂载文件夹及启动脚本
问题根因&修复步骤
- 挂载路径不匹配
你当前Deployment配置里的volumeMounts.mountPath设置为/bitnami/zoo,但你需要文件显示的路径是/bitnami/zookeeper,二者不一致自然看不到文件。 - PV绑定的本地路径错误
PV的hostPath.path配置为/tmp/tmp1,而你存放文件的本地路径是/tmp/zoo,读取的目录不对。 - PVC和PV绑定规则不匹配
PVC没有指定storageClassName: manual,和PV的存储类名称不一致,会导致PVC无法绑定你创建的PV,最终可能使用集群默认存储类,根本不会读取本地路径的内容。另外PVC的访问模式是ReadWriteOnce,PV是ReadWriteMany,访问模式不一致也会导致绑定失败。 - 单独文件挂载需求未实现
你需要单独挂载启动脚本的话,如果不希望整个目录被覆盖,可以配合subPath参数实现单个文件挂载,避免覆盖目录下其他原有文件。
修正后的核心配置片段
首先修改PV的hostPath和访问模式,对齐实际目录和PVC配置:
apiVersion: v1 kind: PersistentVolume metadata: name: foo spec: storageClassName: manual claimRef: name: bitnamidockerzookeeper-zookeeper-data capacity: storage: 100Mi accessModes: - ReadWriteOnce # 和PVC访问模式保持一致 hostPath: path: /tmp/zoo # 改为你实际存放文件的本地路径
然后修改PVC补充存储类配置,确保能和PV绑定:
apiVersion: v1 kind: PersistentVolumeClaim metadata: creationTimestamp: null labels: io.kompose.service: bitnamidockerzookeeper-zookeeper-data type: local name: bitnamidockerzookeeper-zookeeper-data spec: storageClassName: manual # 和PV存储类名称保持一致 accessModes: - ReadWriteOnce resources: requests: storage: 100Mi
最后修改Deployment的挂载配置,对齐目标路径,同时支持单独脚本挂载:
containers: - image: bitnami/zookeeper:3 name: zookeeper ports: - containerPort: 2181 env: - name: ALLOW_ANONYMOUS_LOGIN value: "yes" resources: {} volumeMounts: - mountPath: /bitnami/zookeeper # 改为你需要的文件目标路径 name: bitnamidockerzookeeper-zookeeper-data # 若需要单独挂载启动脚本到指定路径、不覆盖整个目录,可新增下面的配置 # - mountPath: /容器内/脚本/存放路径/start.sh # 脚本在容器内的完整目标路径 # name: bitnamidockerzookeeper-zookeeper-data # subPath: start.sh # 你本地/tmp/zoo目录下的脚本文件名
内容的提问来源于stack exchange,提问作者Madhuri Devidi
相关产品推荐
相关产品推荐

