Windows中Kubernetes .yaml中PersistentVolume的路径

问题描述 投票:1回答:1

我正处于使用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 ...什么都没有

windows kubernetes yaml persistence
1个回答
1
投票

我进行了很多搜索,因为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

[请让我知道我的回答是否可以帮助您解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.