【问题标题】:Minikube/Kubernetes mountPath is not accessibleMinikube/Kubernetes mountPath 不可访问
【发布时间】:2017-07-13 02:17:32
【问题描述】:

我正在运行 minikube/Kubernetes,并且在部署中从 volumeMount 访问卷时遇到困难。

我可以确认,当微服务启动时,它无法访问 /config 目录(即“volumeMounts”中的“mountPath”)。我已经验证了 hostPath/path 是有效的。

我已经尝试了多种技术,并且还验证了部署文件是正确的。我也尝试在路径规范周围使用引号/双引号/无引号,但这并不能解决问题。

请注意,我将“hostPath”用于简单的测试目的,然而,这是我需要解决的场景。

我的 minikube 配置如下图所示:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"2017-01-12T07:30:54Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"1970-01-01T00:00:00Z", GoVersion:"go1.7.1", Compiler:"gc", Platform:"linux/amd64"}

我在 MacOS/Sierra 版本 10.12.3 (16D32) 上运行 minikube。

我的部署文件(deployment.yaml):

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: atmp1000-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: atmp1000
    spec:
      containers:
      - name: atmp1000
        image: atmp1000
        ports:
        - containerPort: 7010
        volumeMounts:
          - name: atmp1000-volume
            mountPath: '/config'
      volumes:
      - name: atmp1000-volume
        hostPath:
          path: '/Users/<username>/<some-path>/config'

感谢任何帮助。

【问题讨论】:

    标签: kubernetes minikube


    【解决方案1】:

    为了完整起见,以下是我找到的解决方案...我得到了在 minikube(在 Mac 上)上工作的 hostPath 和挂载,这需要几个步骤,但需要几个“minikube delete”命令才能获得最新的版本并重置环境。以下是有关如何实现此功能的一些附加说明:

    • 我必须使用 xhyve 驱动程序才能使其正常工作——它可能使用其他驱动程序也能工作,但我没有尝试过。

    • 我发现 minikube 将主机路径挂载在“/User”,这意味着“volumes/hostPath/path”应该从“/User”开始

    • 我发现了多种可行的方法,包括使用声明,但原始问题中的文件现在反映了正确且简单的配置。

    【讨论】:

      【解决方案2】:

      minikube 还不支持主机挂载目录。请查看https://github.com/kubernetes/minikube/issues/2

      minikube 在内部使用虚拟机来托管 Kubernetes。如果您在 POD 规范中指定 hostPath,Kubernetes 将在 VM 中托管指定目录,而不是实际主机上的目录。

      如果您确实需要访问主机上的某些内容,则必须使用 NFS 或任何其他基于网络的卷类型。

      【讨论】:

      • 好的。我可以尝试 nfs,但是,minikube 文档特别指出 hostPath 可用于 minikube .. 请参阅 github.com/kubernetes/minikube) 并参阅:blog.kubernetes.io/2016/07/…)。我不确定它是否有任何区别,但我在 Mac 上使用 xhyve 管理程序而不是使用 VirtualBox 版本。
      • 从您提到的第一个链接中:“Minikube 支持 hostPath 类型的 PersistentVolume。这些 PersistentVolume 映射到 minikube VM 内的目录。”请注意最后一句话。它说主机挂载是基于虚拟机内部的目录。
      • 关于 hostPath 的快速问题,因为我在文档中找不到具体讨论:如果我想从 minikube VM 和 pod 中访问主机文件,主机上的 minikube 根目录是我应该将文件放入以便它们可以在 mounthPath 中看到(我意识到这不是最佳实践,但我正在尝试解决特定问题)?
      • 啊抱歉,我刚刚重新阅读了 minikube 自述文件。在mounted-host-folders 中,我看到 /Users 实际上在 VM 和主机之间共享,因此您的初始部署实际上应该按预期工作。你得到哪个错误?也可能是权限问题。
      • 我正在尝试访问存在于特定主机目录中的配置文件,并且从 pod 访问它时会收到一条错误消息,指出该文件不存在。我相信这是因为我错误地挂载了目录。但是,如果我理解您关于 /Users 已安装的评论(我在 /etc/exports 中看到了一个共享),那么 pod 中的根目录将映射到该共享。如果是这种情况,那么也许我需要来自安装点(/用户)的相对路径?想法?
      猜你喜欢
      • 2019-12-16
      • 2017-04-04
      • 2021-09-17
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      • 2018-04-20
      • 2020-10-04
      • 2020-06-17
      相关资源
      最近更新 更多