Je suis sous minikube v0.24.1. Dans ce mini-cube, je vais créer un pod pour mon application nginx. Et aussi je veux transmettre des données de mon répertoire local.
Cela signifie que je veux monter mon $HOME/go/src/github.com/nginx
local dans mon pod
Comment puis-je faire ceci?
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
Vous ne pouvez pas monter votre répertoire local directement dans votre pod.
Tout d’abord, vous devez monter votre répertoire $HOME/go/src/github.com/nginx
dans votre minikube.
$ minikube start --mount-string="$HOME/go/src/github.com/nginx:/data"
Ensuite, si vous montez /data
dans votre pod en utilisant hostPath, vous obtiendrez les données du répertoire local dans Pod.
Il y a une autre façon
Le répertoire $HOME
de l'hôte est monté dans le répertoire /hosthome
de minikube. Ici, vous aurez vos données
$ ls -la /hosthome/go/src/github.com/nginx
Donc, pour monter ce répertoire, vous pouvez changer le chemin d'hôte de votre pod
hostPath:
path: /hosthome/go/src/github.com/nginx
J'ai essayé la solution d'aerokite, mais j'ai découvert que je devais passer --mount
et --mount-string "local-path:minikube-path"
pour monter un répertoire dans minikube.
minikube start --mount-string ${HOME}/go/src/github.com/nginx:/data --mount
. passé un peu de temps à comprendre cela.
J'ai trouvé un moyen.
De cette façon, vous pouvez monter directement le répertoire sur le conteneur. Vous n'êtes pas obligé de monter votre répertoire sur minikube en premier.
Nous pouvons spécifier le répertoire que nous voulons ajouter au conteneur en utilisant hostPath
dans 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
Pour un minikube en cours d'exécution, vous pouvez effectuer les opérations suivantes:
Nohup minikube mount <Host-directory-path>:<desired-minikube-directory-path> &
Minikube monte déjà le répertoire de base par défaut sur la VM:
/Users
homedir.HomeDir()
Vous pouvez voir comment cela fonctionne si vous naviguez parmi les sources de minikube.
Voici la recherche du moment, mais le résultat peut changer avec le temps:
https://github.com/kubernetes/minikube/search?q=DefaultMountDir&unscoped_q=DefaultMountDir
La définition de la HomeDir()
est la suivante: https://godoc.org/k8s.io/client-go/util/homedir
Vous pouvez toujours faire minikube ssh
dans le Minikube VM et l'explorer:
$ df -hl
Filesystem Size Used Avail Use% Mounted on
...
/Users 466G 442G 25G 95% /Users
Minikube étant un cluster Kubernetes à un seul noeud, vous pouvez ensuite monter /Users/...
dans vos pods.
minikube mount /path/to/dir/to/mount:/vm-mount-path
est la méthode recommandée pour monter des répertoires dans un minikube afin qu'ils puissent être utilisés dans votre cluster Kubernetes local. La commande fonctionne sur toutes les plateformes prises en charge.
Voir la documentation et l'exemple: https://github.com/kubernetes/minikube/blob/master/docs/Host_folder_mount.md