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”开始
我发现了多种可行的方法,包括使用声明,但原始问题中的文件现在反映了正确且简单的配置。
我是 运行 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”开始
我发现了多种可行的方法,包括使用声明,但原始问题中的文件现在反映了正确且简单的配置。