Minikube/Kubernetes 无法访问 mountPath

Minikube/Kubernetes mountPath is not accessible

我是 运行 minikube/Kubernetes,我很难从部署中的 volumeMount 访问卷。

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

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

请注意,我使用 "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"}

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

我的部署文件(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'

感谢任何帮助。

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

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

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

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

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

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

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