Kubernetes 将本地目录装入minikube的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:

我正在运行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

您不能直接将本地目录装入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()
如果您浏览Minikube资源,您可以看到它是如何做到这一点的。
以下是目前的搜索结果,但结果可能会随时间而变化:

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