我正处于使用Kubernetes的第一步,但是我一直困扰于Windows路径问题。我定义了一个.yaml,其中有一个PersistentVolume(文件不完整,仅是问题的一部分)
apiVersion: v1
kind: PersistentVolume
metadata:
name: mongo-pv
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /c/temp/data/db
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- docker-desktop
我使用的是最新的minikube(1.8.2),并且Windows 10 Pro的更新的kubectl已更新,Docker社区的最新版本。
我进行了大量的搜索,因为每个示例中的Kubernetes都指向Unix / Macos的路径。我发现(不记得在哪里...)Windows的有效路径应该是示例中的路径。路径:/ c / temp / data / db
但是它不起作用:在Linux容器上打开Docker,c:共享,在Docker中激活Kubernetes,并带有“ describe pod”,我得到了
“找不到可用的持久卷进行绑定”
[显然,我尝试了另一个磁盘(在Docker中共享),尝试了“ / c / temp / data / db”,它被“包围,试图将所有权限分配给此路径上的所有人,/ c / Users ...什么都没有
我进行了很多搜索,因为Kubernetes的每个样本都引用了到Unix / Macos的路径。我发现(不记得在哪里...)Windows的有效路径应为示例路径中的路径:/ c / temp / data / db
使用minikube,您无法在尝试将本地目录装载到PersistentVolume中。
Minikube使用Linux创建虚拟机,并且您的集群正在此Linux VM中运行。这就是为什么它无法在Windows计算机中看到文件的原因。
为了能够将本地目录访问到minikube集群中,您需要将其安装到minikube中:
您几乎没有选择来实现所需的功能。最好和最简单的方法是使用选项--mount
启动您的迷你库。默认情况下,此选项将挂载C:/ Users /。
示例:
PS C:\WINDOWS\system32> minikube delete; minikube.exe start --vm-driver=virtualbox --mount
如果您使用minikube Linux VM SSH:
PS C:\WINDOWS\system32> minikube ssh
_ _
_ _ ( ) ( )
___ ___ (_) ___ (_)| |/') _ _ | |_ __
/' _ ` _ `\| |/' _ `\| || , < ( ) ( )| '_`\ /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )( ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)
$
$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 1.9G 489M 1.5G 26% /
devtmpfs 987M 0 987M 0% /dev
tmpfs 1.1G 0 1.1G 0% /dev/shm
tmpfs 1.1G 17M 1.1G 2% /run
tmpfs 1.1G 0 1.1G 0% /sys/fs/cgroup
tmpfs 1.1G 4.0K 1.1G 1% /tmp
/dev/sda1 17G 1.3G 15G 8% /mnt/sda1
/c/Users 181G 106G 76G 59% /c/Users
$ cd /c/Users/
$ pwd
/c/Users
如果要安装\ C:/ Users以外的其他目录,请查看minikube mount和/或--mount-string。这些选项可能会遇到一些问题,具体取决于您的vm-driver。
安装目录后,您可以在PersistentVolume中使用它,并参考基于我的示例的Linux路径可以是/ c / Users / myname / myapp / db。
apiVersion: v1
kind: PersistentVolume
metadata:
name: mongo-pv
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /c/Users/myname/myapp/db
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- docker-desktop
[请让我知道我的回答是否可以帮助您解决问题。