Windows 中 Kubernetes .yaml 中 PersistentVolume 的路径
path for PersistentVolume in Kubernetes .yaml in Windows
我刚开始使用 Kubernetes,我遇到了 Windows 路径的问题。
我为 PersistentVolume 定义了一个 .yaml(文件不完整,只有问题的一部分)
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) 和更新的 kubectl Windows 10 Pro 已更新,Docker 社区最新版本。
我搜索了很多,因为 Kubernetes 的每个示例都引用了 Unix/Macos 的路径。
我发现(不记得在哪里...) Windows 的有效路径应该是示例中的路径
路径:/c/temp/data/db
但它不起作用:Docker 已打开 Linux 容器,c: 共享,Docker 中的 Kubernetes 已激活,"describe pod " 我得到
"didn't find available persistent volumes to bind"
显然我尝试了另一个磁盘(在 Docker 中共享),尝试了“/c/temp/data/db”,它被“包围”,试图将所有权限授予这条路径上的每个人,/c/Users...没有
I searched a lot because of every sample for Kubernetes is referring
to paths for Unix/Macos. I found (don't remember where...) that a
valid path for Windows should be the one in the sample path:
/c/temp/data/db
使用 minikube 时,您无法将本地目录挂载到 PersistentVolume 中。
Minikube 使用 Linux 创建了一个虚拟机,您的集群是 运行 在此 Linux VM 中。这就是它无法在您的 windows 计算机中看到您的文件的原因。
为了能够将您的本地目录访问到您的 minikube 集群中,您需要将其安装到您的 minikube 中:
您几乎没有选择来实现您的需求。最好和最简单的方法是使用选项 --mount
启动您的 minikube。默认情况下,此选项将挂载 C:/Users/。
示例:
PS C:\WINDOWS\system32> minikube delete; minikube.exe start --vm-driver=virtualbox --mount
如果你通过 ssh 进入 minikube Linux 虚拟机:
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
如果您 want\need 挂载除 C:/Users 以外的任何其他目录,请查看 minikube mount and/or --mount-string。根据您的虚拟机驱动程序,您可能会遇到这些选项的一些问题。
挂载目录后,您可以在 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
请让我知道我的回答是否帮助您解决了问题。
我刚开始使用 Kubernetes,我遇到了 Windows 路径的问题。 我为 PersistentVolume 定义了一个 .yaml(文件不完整,只有问题的一部分)
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) 和更新的 kubectl Windows 10 Pro 已更新,Docker 社区最新版本。
我搜索了很多,因为 Kubernetes 的每个示例都引用了 Unix/Macos 的路径。 我发现(不记得在哪里...) Windows 的有效路径应该是示例中的路径 路径:/c/temp/data/db
但它不起作用:Docker 已打开 Linux 容器,c: 共享,Docker 中的 Kubernetes 已激活,"describe pod " 我得到
"didn't find available persistent volumes to bind"
显然我尝试了另一个磁盘(在 Docker 中共享),尝试了“/c/temp/data/db”,它被“包围”,试图将所有权限授予这条路径上的每个人,/c/Users...没有
I searched a lot because of every sample for Kubernetes is referring to paths for Unix/Macos. I found (don't remember where...) that a valid path for Windows should be the one in the sample path: /c/temp/data/db
使用 minikube 时,您无法将本地目录挂载到 PersistentVolume 中。
Minikube 使用 Linux 创建了一个虚拟机,您的集群是 运行 在此 Linux VM 中。这就是它无法在您的 windows 计算机中看到您的文件的原因。
为了能够将您的本地目录访问到您的 minikube 集群中,您需要将其安装到您的 minikube 中:
您几乎没有选择来实现您的需求。最好和最简单的方法是使用选项 --mount
启动您的 minikube。默认情况下,此选项将挂载 C:/Users/。
示例:
PS C:\WINDOWS\system32> minikube delete; minikube.exe start --vm-driver=virtualbox --mount
如果你通过 ssh 进入 minikube Linux 虚拟机:
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
如果您 want\need 挂载除 C:/Users 以外的任何其他目录,请查看 minikube mount and/or --mount-string。根据您的虚拟机驱动程序,您可能会遇到这些选项的一些问题。
挂载目录后,您可以在 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
请让我知道我的回答是否帮助您解决了问题。