Kubernetes 中的 9P 和 hostPath 挂载有什么区别?

Dan*_*ger 3 kubernetes minikube

我正在寻找在 minikube 上的 Kubernetes 中运行的应用程序的本地开发。我想挂载本地目录以加快开发速度,这样我就可以对我的应用程序(python)进行代码更改,而无需重建容器。

如果我理解正确的话,我有两个现成的选项:

  1. minikube提供的9P卡口
  2. 直接来自 Kubernetes 的hostPath 挂载

它们之间有什么区别,在什么情况下其中一种比另一种更合适?

Mal*_*ata 5

9P挂载hostPath 是两个不同的概念。您无法使用 9P 挂载将目录挂载到 pod。

9P mount 用于将主机目录挂载到 minikube VM 中。

HostPath 是一个持久卷,它将文件或目录从主机节点(在您的情况下为 minikube VM)文件系统挂载到您的 Pod 中。

另请查看持久卷的类型:pv-types-k8s

如果你想挂载本地目录到pod:

首先,您需要使用9P$HOME/your/path将目录挂载 到您的 minikube VM 中。执行命令:

$ minikube start --mount-string="$HOME/your/path:/data"

Run Code Online (Sandbox Code Playgroud)

然后,如果您 使用hostPath/data挂载 到 Pod 中,您会将本地目录数据获取到 Pod 中。

另一个解决方案

将主机的 $HOME 目录挂载到 minikube 的 /hosthome 目录中。获取您的数据:

$ ls -la /hosthome/your/path
Run Code Online (Sandbox Code Playgroud)

要挂载此目录,您只需更改 Pod 的 hostPath

hostPath:
  path: /hosthome/your/path
Run Code Online (Sandbox Code Playgroud)

看一下:minikube-mount-data-into-pod

您还需要知道:

Minikube 配置为保留存储在以下目录下的文件,这些文件是在 Minikube VM 中创建的(如果在裸机上运行,​​则在本地主机上创建)。重新启动时您可能会丢失其他目录中的数据。

更多:note-persistence-minikube

请参阅驾驶员安装座作为替代方案。