web-dev-qa-db-ja.com

ローカルディレクトリをminikubeのポッドにマウントする

Minikube v0.24.1を実行しています。このminikubeでは、nginxアプリケーションのポッドを作成します。また、ローカルディレクトリからデータを渡したいです。

つまり、ローカル$HOME/go/src/github.com/nginxをポッドにマウントしたいということです。

これどうやってするの?

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

ローカルディレクトリをポッドに直接マウントすることはできません。

まず、ディレクトリをマウントする必要があります$HOME/go/src/github.com/nginxをminikubeに入れます。

$ minikube start --mount-string="$HOME/go/src/github.com/nginx:/data"

その後、/data hostPathを使用してポッドに移動すると、ローカルディレクトリデータがポッドに移動します。

別の方法があります

ホストの$HOMEディレクトリがminikubeの/hosthomeディレクトリ。ここでデータを取得します

$ ls -la /hosthome/go/src/github.com/nginx

したがって、このディレクトリをマウントするには、PodのhostPathを変更できます

hostPath:
  path: /hosthome/go/src/github.com/nginx
21
aerokite

エアロカイトの解決策を試しましたが、--mount と同様 --mount-string "local-path:minikube-path"は、minikubeにディレクトリをマウントします。

minikube start --mount-string ${HOME}/go/src/github.com/nginx:/data --mount。これを理解するのに少し時間を費やしました。

10
K.S.

私は方法を発見しました。

これにより、ディレクトリをコンテナに直接マウントできます。最初にディレクトリをminikubeにマウントする必要はありません。

hostPathvolumesを使用して、コンテナに追加するディレクトリを指定できます。

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

すでに実行中のminikubeの場合、次のことができます。

Nohup minikube mount <Host-directory-path>:<desired-minikube-directory-path> &

2
hokiegeek2

パーティーに遅れて参加したかどうかはわかりませんが、次のコマンドを実行してroot:rootマッピングを行いました。

minikube start --mount-string="/:/"

これにより、ローカルファイルシステムのルートがminikubeにマウントされるだけで、システム間でシームレスな状態が維持されます。

0
Lost

DefaultMountDir

MinikubeはすでにデフォルトのホームディレクトリをVMにマウントしています:

  • 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 VMに入力して、探索することができます:

_$ 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クラスターで使用できるように、ディレクトリをminikubeにマウントする推奨方法です。このコマンドは、サポートされているすべてのプラットフォームで機能します。

ドキュメントと例を参照してください: https://github.com/kubernetes/minikube/blob/master/docs/Host_folder_mount.md

0
Ivan