Abu*_*ifa 24 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:
- mountPath: /data
name: volume
volumes:
- name: volume
hostPath:
path: /data
Run Code Online (Sandbox Code Playgroud)
aer*_*ite 24
您无法直接将本地目录挂载到Pod中.
首先,您需要将目录安装$HOME/go/src/github.com/nginx到minikube中.
$ minikube start --mount-string="$HOME/go/src/github.com/nginx:/data"
Run Code Online (Sandbox Code Playgroud)
然后,如果/data使用hostPath 挂载到Pod中,您将获得Pod中的本地目录数据.
还有另一种方式
主机的$HOME目录被挂载到minikube的/hosthome目录中.在这里,您将获得您的数据
$ ls -la /hosthome/go/src/github.com/nginx
Run Code Online (Sandbox Code Playgroud)
因此,要安装此目录,您可以更改Pod的hostPath
hostPath:
path: /hosthome/go/src/github.com/nginx
Run Code Online (Sandbox Code Playgroud)
Aks*_*ood 12
我找到了一个方法。
这样你就可以直接将目录挂载到容器中。您不必先将目录挂载到 minikube。
我们可以使用hostPathin指定我们要添加到容器中的目录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
Run Code Online (Sandbox Code Playgroud)
K.S*_*.S. 10
我尝试了aerokite的解决方案,但发现我必须通过--mount以及--mount-string "local-path:minikube-path"在minikube中安装目录.
minikube start --mount-string ${HOME}/go/src/github.com/nginx:/data --mount.花了一些时间搞清楚这一点.
Minikube 已经默认将主目录挂载到 VM:
/Usershomedir.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
Run Code Online (Sandbox Code Playgroud)
由于 Minikube 是一个单节点 Kubernetes 集群,因此您可以安装/Users/...在您的 pod 中。
minikube mount /path/to/dir/to/mount:/vm-mount-path是将目录挂载到 minikube 中的推荐方法,以便它们可以在本地 Kubernetes 集群中使用。该命令适用于所有支持的平台。
请参阅文档和示例:https : //minikube.sigs.k8s.io/docs/tasks/mount/
经过一个小时的努力并查看这些答案后,我得到了一些与工作有点相似的东西:
首先,我正在minikube用virtualbox的驱动程序。
minikube version
minikube version: v1.9.2
Run Code Online (Sandbox Code Playgroud)
我的启动命令:
minikube start --mount=true --mount-string=$(HOME)/somedir/on/host/:/somedir/on/vm/
如果您为此而苦苦挣扎,我强烈建议您运行 minikube help 来查看标志是什么。我怀疑这些可能会因不同的版本/构建而改变。
如果您希望将此挂载目录放入您的 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/
Run Code Online (Sandbox Code Playgroud)
希望额外的润色、细节和组织可以帮助其他人在这方面更快地行动。
重新审视这个,因为其他人似乎喜欢它:如果你被绑定到 pure minikube,我建议使用上面的,但我找到了更好的方法来使用 skaffold 和 docker for mac 在本地开发 minikube 集群。Docker for mac 可以使用本地机器的 docker 守护进程在本地(在容器中)运行像 k8s 集群这样的 minikube(所以挂载文件等等是轻而易举的)。它很可爱,与 skaffold 一起使用可以使热重载和所有其他天堂般的功能成为可能。如果您对 minikube 的重量不满意,请检查这些技术。
小智 7
对于已经运行的 minikube,您可以执行以下操作:
nohup minikube mount <host-directory-path>:<desired-minikube-directory-path> &
| 归档时间: |
|
| 查看次数: |
13985 次 |
| 最近记录: |