我正在运行minikube v0.24.1。在这个minikube中,我将为我的nginx应用程序创建一个Pod。而且我也希望从本地目录传递数据。
这意味着我想将我的本地$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
答案 0 :(得分:17)
您无法直接将本地目录挂载到Pod中。
首先,您需要将目录$HOME/go/src/github.com/nginx
安装到迷你管中。
$ minikube start --mount-string="$HOME/go/src/github.com/nginx:/data"
然后如果使用hostPath将/data
挂载到Pod中,您将获得Pod中的本地目录数据。
另一种方式
主机的$HOME
目录被装入minikube的/hosthome
目录。在这里,您将获得数据
$ ls -la /hosthome/go/src/github.com/nginx
因此,要安装此目录,您可以更改Pod的hostPath
hostPath:
path: /hosthome/go/src/github.com/nginx
答案 1 :(得分:8)
我尝试了aerokite的解决方案,但是发现我必须同时通过--mount
和--mount-string "local-path:minikube-path"
才能在minikube中安装目录。
minikube start --mount-string ${HOME}/go/src/github.com/nginx:/data --mount
。
花了一些时间解决这个问题。
答案 2 :(得分:6)
经过一个小时的努力并查看了这些答案后,我得到了一些与工作类似的东西:
首先,我以minikube
作为驱动程序运行virtualbox
。
minikube version
minikube version: v1.9.2
我的启动命令:
minikube start --mount=true --mount-string=$(HOME)/somedir/on/host/:/somedir/on/vm/
如果您为此而苦苦挣扎,我强烈建议您运行minikube帮助来查看标志。我怀疑这些可能会针对不同的版本/内部版本进行更改。
如果要将此挂载目录放入pod中,则必须在清单文件中建立卷和卷挂载。 这是我的简化版本。
apiVersion: v1
kind: Service
...
---
apiVersion: apps/v1
kind: Deployment
...
spec:
replicas: 1
...
template:
...
spec:
containers:
...
volumeMounts:
- name: someName
mountPath: /somedir/on/vm/
...
volumes:
- name: someName
hostPath:
path: /somedir/on/vm/
希望额外的修饰,细节和组织可以帮助其他人更快地完成此任务。
仿佛其他人喜欢它:
如果您受制于纯minikube
,我建议使用上面的方法,但是我发现了使用skaffold和docker for mac在本地开发minikube集群的更好方法。 Docker for mac可以使用本地计算机的docker守护程序在本地(容器中)运行像k8s集群这样的微型库(因此,挂载文件非常容易)。它很可爱,可以与skaffold一起使用,从而可以进行热装和所有其他天堂般的功能。如果您对minikube的笨重感不满意,请检查一下这些技术。
答案 3 :(得分:4)
我找到了方法。
这样,您可以直接将目录挂载到容器。您不必先将目录挂载到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 :(得分:2)
对于已经运行的minikube,您可以执行以下操作:
nohup minikube mount <host-directory-path>:<desired-minikube-directory-path> &
答案 5 :(得分:0)
默认情况下,Minikube已将主目录安装到VM:
/Users
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 VM进行minikube ssh
并进行探索:
$ df -hl
Filesystem Size Used Avail Use% Mounted on
...
/Users 466G 442G 25G 95% /Users
由于Minikube是单节点Kubernetes集群,因此您可以将/Users/...
安装在pod中。
推荐使用
minikube mount /path/to/dir/to/mount:/vm-mount-path
将目录挂载到minikube中,以便可以在本地Kubernetes集群中使用它们。该命令在所有受支持的平台上均有效。
请参阅文档和示例: https://github.com/kubernetes/minikube/blob/master/docs/host_folder_mount.md
答案 6 :(得分:0)
检查minikube运行中安装了哪些通行证
minikube ssh
,然后ls -la
答案 7 :(得分:-1)
不确定我是否参加晚了,但是通过执行以下命令进行了root:root映射:
minikube start --mount-string="/:/"
这只会将本地文件系统根目录挂载到minikube并保持系统之间的无缝连接。希望有帮助。