путь для PersistentVolume в Kubernetes .yaml в Windows - PullRequest
1 голос
/ 21 марта 2020

Я на первых шагах с 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

Я использую последний мини-куб (1.8.2) с обновленным kubectl на Windows 10 Pro обновлено, Docker Последняя версия сообщества.

Я много искал, потому что каждый пример Kubernetes ссылается на пути для Unix / Macos. Я обнаружил (не помню где ...), что допустимый путь для Windows должен быть тем же, что и в примере пути: / c / temp / data / db

Но он не работает: Docker включен Linux контейнеры, c: общий доступ, Kubernetes в Docker активирован, с "описать модуль" я получаю

"не нашел доступных постоянных томов для привязки"

Очевидно, я пробовал другой диск (общий доступ к Docker), пробовал "/ c / temp / data / db", который окружен ", пытался предоставить все разрешения для всех на этом пути, / c / Users. ..nothing

1 Ответ

1 голос
/ 23 марта 2020

Я много искал, потому что в каждом примере Kubernetes ссылается на пути для Unix / Macos. Я обнаружил (не помню где ...), что допустимый путь для Windows должен быть тем же, что и в примере пути: / c / temp / data / db

С помощью minikube вы не удается подключить локальный каталог в PersistentVolume при попытке.

Minikube создает виртуальную машину с Linux, и ваш кластер работает внутри этой Linux VM. Вот почему он не видит ваши файлы на вашем компьютере windows.

Чтобы получить доступ к вашему локальному каталогу в кластере мини-кубов, вам необходимо смонтировать его в свой мини-куб:

Вы есть несколько вариантов, чтобы достичь того, что вам нужно. Лучший и самый простой способ - запустить мини-куб с опцией --mount. Эта опция будет монтировать C: / Users / по умолчанию.

Пример:

PS C:\WINDOWS\system32> minikube delete; minikube.exe start --vm-driver=virtualbox --mount  

Если вы введете sh в мини-куб 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  

Если вы хотите \ нужно смонтировать любой каталог, отличный от C: / Users, взгляните на minikube mount и / или - mount-string . Вы можете столкнуться с некоторыми проблемами при использовании этой опции в зависимости от вашего vm-драйвера.

После монтирования вашего каталога вы можете использовать его в своем 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

Пожалуйста, дайте мне знать, если мой ответ помог вам решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...