Смонтированные папки хоста Minikube не работают

Я использую Ubuntu 18 с minikube и виртуальным ящиком и пытаюсь смонтировать каталог хоста, чтобы получить входные данные, которые нужны моему модулю.

Я обнаружил, что у minikube есть проблемы с монтированием каталогов хоста, но по умолчанию в соответствии с вашей ОС и драйвером vm есть каталоги, которые монтируются с помощью по умолчанию

Я не могу найти их на своих стручках. Их просто нет.

Я попытался создать постоянный том, он работает, я вижу его на своей панели инструментов, но я не могу подключить его к модулю, я использовал этот yaml для создания тома

{
  "kind": "PersistentVolume",
  "apiVersion": "v1",
  "metadata": {
    "name": "pv0003",
    "selfLink": "/api/v1/persistentvolumes/pv0001",
    "uid": "28038976-9ee4-414d-8478-b312a24a6b94",
    "resourceVersion": "2030",
    "creationTimestamp": "2019-08-08T10:48:23Z",
    "annotations": {
      "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"PersistentVolume\",\"metadata\":{\"annotations\":{},\"name\":\"pv0001\"},\"spec\":{\"accessModes\":[\"ReadWriteOnce\"],\"capacity\":{\"storage\":\"5Gi\"},\"hostPath\":{\"path\":\"/data/pv0001/\"}}}\n"
    },
    "finalizers": [
      "kubernetes.io/pv-protection"
    ]
  },
  "spec": {
    "capacity": {
      "storage": "6Gi"
    },
    "hostPath": {
      "path": "/user/data",
      "type": ""
    },
    "accessModes": [
      "ReadWriteOnce"
    ],
    "persistentVolumeReclaimPolicy": "Retain",
    "volumeMode": "Filesystem"
  },
  "status": {
    "phase": "Available"
  }
}

И этот yaml для создания задания.

apiVersion: batch/v1
kind: Job
metadata:
  name: pi31
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["sleep"]
        args: ["300"]
        volumeMounts:
        - mountPath: /data
          name: pv0003
      volumes:
        - name: pv0003
          hostPath:
            path: /user/data
      restartPolicy: Never
  backoffLimit: 1

Я также пытался создать тома в соответствии с так называемыми путями монтирования по умолчанию, но безуспешно.

Я попытался добавить требование объема к yaml создания задания, но ничего.

Когда я монтирую диски и создаю их в файлах yaml создания заданий, задания могут видеть данные, которые создают другие задания, но они невидимы для хоста, а данные хоста невидимы для них.

Я запускаю minikube от своего основного пользователя и проверяю журналы на панели инструментов, не получая никаких ошибок разрешений.

Есть ли способ получить данные в этот миникуб без настройки NFS? Я пытаюсь использовать его для MVP, вся идея в том, чтобы он был простым...


person thebeancounter    schedule 08.08.2019    source источник


Ответы (1)


Это не так просто, так как minikube работает внутри виртуальной машины, созданной в Virtualbox, поэтому, используя hostPath, вы видите файловую систему этой виртуальной машины вместо вашего ПК.

Я бы очень рекомендовал использовать команду minikube mount - вы можете найти описание здесь

Из документов:

minikube mount /path/to/dir/to/mount:/vm-mount-path — рекомендуемый способ монтирования каталогов в minikube, чтобы их можно было использовать в локальном кластере Kubernetes.

Так что после этого вы можете поделиться файлами вашего хоста внутри minikube Kubernetes.

Редактировать:

Вот пошаговый лог, как это проверить:

➜  ~ minikube start
* minikube v1.3.0 on Ubuntu 19.04
* Tip: Use 'minikube start -p <name>' to create a new cluster, or 'minikube delete' to delete this one.
* Starting existing virtualbox VM for "minikube" ...
* Waiting for the host to be provisioned ...
* Preparing Kubernetes v1.15.2 on Docker 18.09.6 ...
* Relaunching Kubernetes using kubeadm ... 
* Waiting for: apiserver proxy etcd scheduler controller dns
* Done! kubectl is now configured to use "minikube"
➜  ~ mkdir -p /tmp/test-dir
➜  ~ echo "test-string" > /tmp/test-dir/test-file
➜  ~ minikube mount /tmp/test-dir:/test-dir
* Mounting host path /tmp/test-dir into VM as /test-dir ...
  - Mount type:   <no value>
  - User ID:      docker
  - Group ID:     docker
  - Version:      9p2000.L
  - Message Size: 262144
  - Permissions:  755 (-rwxr-xr-x)
  - Options:      map[]
* Userspace file server: ufs starting
* Successfully mounted /tmp/test-dir to /test-dir

* NOTE: This process must stay alive for the mount to be accessible ...

Теперь откройте другую консоль:

➜  ~ minikube ssh
                         _             _            
            _         _ ( )           ( )           
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __  
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

$ cat /test-dir/test-file 
test-string

Редактировать 2:

пример job.yml

apiVersion: batch/v1
kind: Job
metadata:
  name: test
spec:
  template:
    spec:
      containers:
      - name: test
        image: ubuntu
        command: ["cat", "/testing/test-file"]
        volumeMounts:
        - name: test-volume
          mountPath: /testing
      volumes:
      - name: test-volume
        hostPath:
          path: /test-dir
      restartPolicy: Never
  backoffLimit: 4
person Jakub Bujny    schedule 08.08.2019
comment
Я был бы очень признателен, если бы вы могли принять мой ответ, если он работает на вас :) - person Jakub Bujny; 09.08.2019
comment
монтирование minicube не сработало, и дефолтный путь монтирования хоста к вм тоже не сработал, получилось запустить и получить монтирование? - person thebeancounter; 09.08.2019
comment
да - он работал на Virtualbox 6.0.6 и Ubuntu 18.04 - person Jakub Bujny; 12.08.2019
comment
вы можете просто протестировать его с помощью команды mount, а затем minikube ssh и перейти по этому пути, чтобы увидеть файлы с хоста - person Jakub Bujny; 12.08.2019
comment
у меня это не работает, я с радостью приму ваш ответ, если вы сможете показать, что это работает... - person thebeancounter; 12.08.2019
comment
просто добавил это для вас :) - person Jakub Bujny; 12.08.2019
comment
bujnu - можете ли вы установить его на работу, которую вы претендуете? - person thebeancounter; 12.08.2019
comment
конечно - добавил пример job.yml для вас - person Jakub Bujny; 12.08.2019