【问题标题】:Mounting volume resulting empty folder in kubernetes minikube?安装卷导致 kubernetes minikube 中的空文件夹?
【发布时间】:2021-08-27 05:26:42
【问题描述】:

我创建了一个部署,我想将主机路径挂载到容器,当我检查容器时,我只看到空文件夹。

为什么会出现此错误?可能是什么原因?

编辑:我使用的是 Windows 操作系统。

apiVersion: apps/v1
kind: Deployment
metadata:
 name: myservicepod6
 labels:
  app: servicepod
spec:
 replicas: 1
 selector:
  matchLabels:
   app: servicepod
 template:
  metadata:
    labels:
     app: servicepod
  spec:
   containers:
   - name: php
     image: php:7.2-apache
     command: ["/bin/sh", "-c"]
     args: ["service apache2 start; sleep infinity"]
     ports:
      - name: serviceport
        containerPort: 80
     volumeMounts:
      - mountPath: /var/www/html/
        name: hostvolume

   volumes:
    - name: hostvolume
      hostPath:
        path: /C/Users/utkarsh/pentesting/learnings/kubernetes/app/objectmanagement/deployments/src/*

编辑答案 -

我启动 minkube - minikube start --mount-string="$HOME/test/src/code/file:/data"

然后我像下面这样更改了部署文件

只显示音量部分

  spec:
   volumes:
   - name: hostvolume
     hostPath:
      path: /C/Users/utkarsh/pentesting/learnings/kubernetes/app/deployments/src
   containers:
   - name: php
     image: php:7.2-apache
     command: ["/bin/sh", "-c"]
     args: ["service apache2 start; sleep infinity"]
     ports:
      - name: serviceport
        containerPort: 80
     volumeMounts: 
      - name: hostvolume
        mountPath: /test/src/code/file

当我登录 pod 并转到目录 (/test/src/code/file) 时,我发现目录是空的

让我知道我错过了什么?

【问题讨论】:

    标签: kubernetes minikube


    【解决方案1】:

    经过详细的搜索和命​​中和尝试方法——找到了方法

    仅适用于 minikube:-

    首先我们需要将host文件夹挂载到目录名中:

    minikube mount src/:/var/www/html

    那么我们需要定义hostPath和mountPath为

    /var/www/html

    因为现在我们已经将文件夹挂载到 html 文件夹了。

    volumes:
       - name: hostvolume
         hostPath:
          path: /var/www/html
       containers:
       - name: php
         image: php:7.2-apache
         command: ["/bin/sh", "-c"]
         args: ["service apache2 start; sleep infinity"]
         workingDir: /var/www/html
         ports:
          - name: serviceport
            containerPort: 80
         volumeMounts: 
          - name: hostvolume
            mountPath: /var/www/html
    
    

    【讨论】:

    • 这只能用一次!我面临一个错误。 ls: cannot open directory '.': Input/output error
    • 嗨@Cloud Learner,有进展吗?
    • @MikolajS.,我正在使用上述解决方案,虽然它给了我错误,但大约在 30 分钟内。我不知道为什么,为什么我收到这个错误。为了消除错误,我需要重新启动部署并重新启动挂载。但我仍在寻找更好的解决方案。
    • 能否在错误发生前后在 pod 和 minikube VM 上运行 ls -ld /var/ww/html(您可以通过运行 minikube ssh 命令 SSH 到 minikube VM)?输出有什么不同吗?
    猜你喜欢
    • 2017-11-19
    • 2018-01-02
    • 2020-09-07
    • 2019-08-26
    • 2021-05-08
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    相关资源
    最近更新 更多