【问题标题】:Kubernetes volume mountingKubernetes 卷挂载
【发布时间】:2020-08-07 05:22:51
【问题描述】:

我正在尝试将目录挂载到我的 pod,但它总是显示错误“找不到文件或目录”

这是我用于部署的 yaml 文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp1-deployment
  labels:
    app: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      volumes:
       - name: test-mount-1
         persistentVolumeClaim:
           claimName: task-pv-claim-1
      containers:
      - name: myapp
        image: 192.168.11.168:5002/dev:0.0.1-SNAPSHOT-6f4b1db
        command: ["java -jar /jar/myapp1-0.0.1-SNAPSHOT.jar --spring.config.location=file:/etc/application.properties"]
        ports:
        - containerPort: 8080
        volumeMounts:
            - mountPath: "/etc/application.properties"
              #subPath: application.properties
              name: test-mount-1
       # hostNetwork: true

      imagePullSecrets:
        - name: regcred
      #volumes:
       # - name: test-mount

这是持久化卷配置:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: test-mount-1
  labels:
    type: local
    app: myapp
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  hostPath:
    path: "/mnt/share"



这是声明卷配置:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim-1
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi



这是用于部署的服务配置:



apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  selector:
    app: myapp
  externalIPs:
   - 192.168.11.145
  ports:
    - protocol: TCP
      port: 8080
      nodePort: 31000
  type: LoadBalancer
status:
  loadBalancer:
    ingress:


如果有人可以提供帮助,我将不胜感激。

【问题讨论】:

  • subPath: application.properties 不工作?
  • 同样的错误“没有这样的文件或目录”尽管 /mnt/share 是一个 nfs 共享分区并且包含文件 application.properties
  • 我在我的实验室中复制了您的设置,并进行了一些小改动(图像和 cmd),以使其适用于我的场景。我还使用了安装在我的主节点和工作节点上的外部 NFS。结果证明您的清单是正确的,它对我有用,无需更改您的 PV、PVC 或 volume/volumeMounts 规格上的任何内容。所以你的问题很可能与你的 NFS 服务器有关。这个 NFS 服务器是新的吗?您是为此特定设置创建的,还是与其他应用程序一起使用?

标签: linux kubernetes mount volumes


【解决方案1】:

您的问题中没有包含您的存储类,但我假设您正在尝试在节点上进行本地存储。检查起来可能很简单,但是该目录是否存在于您的 pod 运行的节点上?它是可写的吗?根据您拥有的工作节点数量,您的 pod 似乎可以在任何节点上运行,并且 pv 未设置为任何特定节点。如果这是问题所在,您可以使用节点关联性来确保您的 pod 在包含 pv 中引用的目录的同一节点上运行。

编辑,如果是nfs,你需要把你的pv改成包括:

nfs: 
  path: /mnt/share 
  server: <nfs server node ip/fqdn>

例如here

【讨论】:

  • /mnt/share 存在于 node worker 和 master 上。而且我只有一个节点。
  • 是 nfs 吗?如果是这样,您需要设置您的 pv 与
  • nfs: path: /mnt/share server: 抱歉格式化,我在打电话。请参阅 here 并向下滚动查看示例。
  • 您的/mnt/share 是否列在您的 nfs 所在的 /etc/exports 文件中。示例here
  • 是的,即使我在主节点和工作节点的此路径中都看到了一些共享文件
猜你喜欢
  • 2019-08-24
  • 2021-10-26
  • 2019-10-09
  • 2017-07-21
  • 2018-08-25
  • 2023-03-18
  • 2018-11-21
  • 2016-04-18
  • 2015-12-02
相关资源
最近更新 更多