Kubernetes 将本地目录装入minikube的pod中
我正在运行minikube v0.24.1。在这个minikube中,我将为我的nginx应用程序创建一个Pod。我还想从本地目录传递数据 这意味着我想把我的本地Kubernetes 将本地目录装入minikube的pod中,kubernetes,minikube,Kubernetes,Minikube,我正在运行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:
$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
您不能直接将本地目录装入Pod 首先,您需要将目录
$HOME/go/src/github.com/nginx
装载到minikube中
$ 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:
path: /hosthome/go/src/github.com/nginx
我找到了一条路
通过这种方式,您可以直接将目录装载到容器中。您不必首先将目录装载到minikube
我们可以使用volumes
中的hostPath
指定要添加到容器中的目录
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
volumeMounts:
-名称:加密配置
安装路径:
-名称:通道工件
mountPath:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
-名称:链码
mountPath:/opt/gopath/src/github.com/chaincode
卷数:
-名称:加密配置
主机路径:
路径:
-名称:通道工件
主机路径:
路径:/Users/akshaysood/Blockchain/Kubernetes/Fabric/network/channel工件
-名称:链码
主机路径:
路径:/Users/akshaysood/Blockchain/Kubernetes/Fabric/network/chaincode
我尝试了aerokite的解决方案,但发现我必须通过--mount
以及--mount字符串“local path:minikube path”
才能在minikube中挂载目录
$ minikube start --mount-string="$HOME/go/src/github.com/nginx:/data"
minikube-start--mount字符串${HOME}/go/src/github.com/nginx:/data--mount
。
花了一些时间来解决这个问题。对于已经运行的minikube,您可以执行以下操作:
nohup minikube山:&
DefaultMountDir
默认情况下,Minikube已将主目录装载到VM:
- 在Mac上,它挂载所有用户的目录-
/users
- 在Linux和Windows上,只有当前用户的主页-
homedir.homedir()
以下是目前的搜索结果,但结果可能会随时间而变化:
HomeDir()
的定义是:
您始终可以对minikube虚拟机执行minikube ssh
,并对其进行探索:
$ 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
是将目录装载到minikube中的推荐方法,以便它们可以在本地Kubernetes集群中使用。该命令适用于所有受支持的平台
请参阅文档和示例:
不确定我是否迟到了,但我通过执行以下命令进行了根:根映射:
minikube启动--mount string=“/:/”
这只会将您的本地文件系统根目录装载到minikube,并保持系统之间的无缝连接。希望这会有所帮助。经过一个小时的努力并回顾了这些答案,我得到了一些与工作稍有相似的东西: 首先,我以
virtualbox
作为驱动程序运行minikube
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/
希望额外的润色、细节和组织有助于其他人在这方面加快步伐
重新审视这一点,因为其他人似乎喜欢它:
如果你是纯
迷你们吧
,我建议你使用上面的方法,但是我已经找到了更好的方法,可以使用skaffold和docker for mac在本地开发迷你们吧集群。Docker for mac可以使用本地机器的Docker守护进程在本地(容器中)运行类似于k8s的minikube群集(因此装载文件,这是轻而易举的事)。这是可爱的,使用它与斯卡福德使热重新加载和所有其他天堂的功能可能。如果您对minikube的重量不满意,请检查这些技术。检查minikube运行中安装了哪些通道
$ minikube start --mount-string="$HOME/go/src/github.com/nginx:/data"
minikube-ssh
然后ls-la
我在pod@aclokay根据表,装载点因VM驱动程序而异。请注意,它通常不适用于KVM驱动程序。在0.28版中使用VirtualBox时,似乎还有一个尚未解决的错误,请参见此处。装载功能似乎不稳定:对于minikube start
,此答案的语法不正确(至少对于v1.0.0版)。正确的语法(来自下面的@K.S答案)是minikube start--mount string${HOME}/go/src/github.com/nginx:/data--mount
我发现OSX上只有空目录,直到我从--vm driver=docker切换到virtualbox,最后很高兴你能在指定卷的地方共享完整的yaml吗?或者详细说明一下你在哪里做的改变。我不清楚你在哪里可以这样做。我尝试了,但被告知卷在我尝试的上下文中是未知的。这是有效的,因为默认情况下,minikube会将主机的/Users装载到macos中VM内的/Users中。对于linux,它将是/home->/hosthome。对于windows C://Users->/C/Users。对于minikube 0中的ref