Подключите локальный каталог к контейнеру в мини-кубе
Я запускаю minikube v0.24.1. В этом миникубе я создам Pod для моего nginx-приложения. А также я хочу передать данные из моего локального каталога.
Это означает, что я хочу установить локальный $HOME/go/src/github.com/nginx
в мой Pod
Как я могу это сделать?
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx:0.1
name: nginx
volumeMounts:
- mountPath: /data
name: volume
volumes:
- name: volume
hostPath:
path: /data
Ответы
Ответ 1
Вы не можете напрямую подключить локальный каталог к своему Pod.
Сначала вам нужно подключить каталог $HOME/go/src/github.com/nginx
к мини-миниму.
$ minikube start --mount-string="$HOME/go/src/github.com/nginx:/data"
Затем, если вы установите /data
в свой Pod с помощью hostPath, вы получите данные локального каталога в Pod.
Существует другой способ
Каталог хоста $HOME
устанавливается в каталог minikube /hosthome
. Здесь вы получите свои данные
$ ls -la /hosthome/go/src/github.com/nginx
Итак, чтобы установить этот каталог, вы можете изменить свой хост-хост Pod
hostPath:
path: /hosthome/go/src/github.com/nginx
Ответ 2
Я опробовал решение для аэрокита, но обнаружил, что мне нужно передать --mount
, а также --mount-string "local-path:minikube-path"
, чтобы смонтировать каталог в миникубе.
minikube start --mount-string ${HOME}/go/src/github.com/nginx:/data --mount
.
Потратил некоторое время на выяснение этого.
Ответ 3
Я нашел способ.
Таким образом, вы можете напрямую смонтировать каталог в контейнер. Вам не нужно сначала монтировать каталог в minikube.
Мы можем указать каталог, который мы хотим добавить в контейнер, используя hostPath
в volumes
volumeMounts:
- name: crypto-config
mountPath: <PATH IN CONTAINER>
- name: channel-artifacts
mountPath: /opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
- name: chaincode
mountPath: /opt/gopath/src/github.com/chaincode
volumes:
- name: crypto-config
hostPath:
path: <YOUR LOCAL DIR PATH>
- name: channel-artifacts
hostPath:
path: /Users/akshaysood/Blockchain/Kubernetes/Fabric/network/channel-artifacts
- name: chaincode
hostPath:
path: /Users/akshaysood/Blockchain/Kubernetes/Fabric/network/chaincode
Ответ 4
Для уже запущенного мини-куба вы можете сделать следующее:
nohup minikube mount <host-directory-path>:<desired-minikube-directory-path> &
Ответ 5
DefaultMountDir
Minikube по умолчанию уже подключает домашний каталог к виртуальной машине:
- на Mac он монтирует каталог всех пользователей -
/Users
- в Linux и Windows просто дом текущего пользователя -
homedir.HomeDir()
Вы можете увидеть, как это происходит, если вы просматриваете источники Minikube.
Вот поиск на данный момент, но результат может измениться со временем:
https://github.com/kubernetes/minikube/search?q=DefaultMountDir&unscoped_q=DefaultMountDir
Определение HomeDir()
:
https://godoc.org/k8s.io/client-go/util/homedir
Вы всегда можете сделать minikube ssh
в виртуальной машине Minikube и изучить ее:
$ df -hl
Filesystem Size Used Avail Use% Mounted on
...
/Users 466G 442G 25G 95% /Users
Поскольку Minikube является кластером Kubernetes с одним узлом, вы можете смонтировать /Users/...
внутри своих модулей.
Рекомендуемый способ
minikube mount /path/to/dir/to/mount:/vm-mount-path
- это рекомендуемый способ монтирования каталогов в мини-куб, чтобы их можно было использовать в локальном кластере Kubernetes. Команда работает на всех поддерживаемых платформах.
Смотрите документацию и пример:https://github.com/kubernetes/minikube/blob/master/docs/host_folder_mount.md
Ответ 6
Не уверен, что присоединился к вечеринке поздно, но я сделал отображение root: root, выполнив следующую команду:
minikube start --mount-string="/:/"
Это просто смонтирует корневой каталог вашей локальной файловой системы в minikube и обеспечит бесперебойную работу систем. Надеюсь, это поможет.