如何在 minikube VM 中挂载主机文件夹

How to mount a Host folder in minikube VM

我有一个用例,我需要 kubernetes 下的 Docker 容器来访问 hostPath。我正在使用 minikube,容器能够访问 minikube VirtualBox VM 中的文件夹。但我不知道如何让它访问主机上的文件夹。

我在主机上执行这些命令以创建 /opt/foo 以便在 VM 中共享:

$ sudo touch /opt/foo/FOO
$ ls /opt/foo
FOO
$ minikube mount -v 5 /opt/foo:/opt/foo
Mounting /opt/foo into /opt/foo on the minikubeVM
This daemon process needs to stay alive for the mount to still be accessible...
ufs starting

在另一个 window 中,我查看了 minikube VM

$ minikube ssh -- sudo ls -la /opt/foo
total 0
drwxrwxr-x 2 root root 0 Jun  1 14:44 .
drwxr-xr-x 5 root root 0 Jun  1 14:44 ..

是否需要其他步骤才能使该目录中的文件可访问?

仅供参考 - 用例是一个容器进程创建主机进程正在收集的文件。因此我不想使用 nfs 或 PersistentVolumes。主机是Centos7。 minikube 版本:v0.19.0.

问题是防火墙,在 Ubuntu 这对我有用:

sudo ufw allow in on virbr1
sudo ufw reload

但是你需要通过ifconfig找出正确的接口名称。

在我的例子中,我做了 minikube ip 来实现接口 virbr1

我找到了解决方案,因为在过去我遇到了与 docker 的连接问题,这些问题已通过 sudo ufw allow in on docker0

解决

只是为了概括 Leo 的出色解决方案:

ip r g $(minikube ip)|awk '{print }'|head -n1|xargs sudo ufw allow in on
sudo ufw reload

这会获取 minikube ip,查找接口并将其添加到防火墙规则中。

希望对大家有所帮助。感谢 Leo。