web-dev-qa-db-fra.com

Monter le répertoire local dans le pod de minikube

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
17
Abu Hanifa

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
15
aerokite

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.

6
K.S.

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
2
Akshay Sood

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> &

0
hokiegeek2

DefaultMountDir

Minikube monte déjà le répertoire de base par défaut sur la VM:

  • sur Mac, il monte le répertoire de tous les utilisateurs - /Users
  • sur Linux et Windows, uniquement le domicile de l'utilisateur actuel - 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.

Manière recommandée

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

0
Ivan