Как подключить том из Kubernetes на хосте Windows к модулю Linux

#windows #docker #kubernetes #volumes

#Windows #docker #kubernetes #тома

Вопрос:

Я пытаюсь смонтировать том в модуле Kubernetes (под управлением Linux) в папку хоста в Windows 10. Модуль запускается без проблем, однако данные в томах не отражаются в модуле, а набор данных в модуле не отражается на хосте Windows.

Вот мой постоянный объем:

     kind: PersistentVolume 
    apiVersion: v1
    metadata:
      name: "elastic-search-persistence"
      labels:
        volume: persistence
    spec:
      storageClassName: hostpath
      capacity:
        storage: 5Gi
      accessmodes:
        - ReadWriteMany
      hostPath:
        path: /c/temp/es
 

Вот мое настойчивое требование:

     kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: "elastic-search-persistence-claim"
    spec:
      storageClassName: hostpath
      volumeName: "elastic-search-persistence"
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
 

А вот мой модуль, использующий вышеупомянутые постоянные тома…

     apiVersion: v1
    kind: Pod
    metadata:
      name: windows-volume-demo
    spec:
      containers:
      - name: windows-volume-demo
        image: busybox
        command: [ "sh", "-c", "sleep 1h" ]
        volumeMounts:
          - name: windows-volume-data-storage
            mountPath: /data/demo
        securityContext:
          allowPrivilegeEscalation: true
      volumes:
        - name: windows-volume-data-storage
          persistentVolumeClaim:
            claimName: elastic-search-persistence-claim
 

Я могу запустить все нормально, однако, когда я создаю файл в своей C:tempes папке на моем хосте Windows, этот файл не отображается внутри /data/demo папки в модуле. Верно и обратное. Когда я запускаю модуль и создаю файл в /data/demo папке, он не отображается в C:tempes папке на хосте Windows.

Права доступа к папке / файлу широко открыты для C:temp папки и C:tempes папки. Я также попытался запустить модуль и изменить настройки записи для /data/demo папки на широко открытые — все безуспешно.

Эта конфигурация работает, как и ожидалось, на хосте Mac (изменение путей тома для хоста на папку Mac). Я подозреваю, что это проблема с привилегиями / разрешениями для Windows, но я не знаю, как ее найти / исправить.

Любая помощь была бы очень признательна.

Комментарии:

1. Как узнать, на каком узле кластера будет работать модуль? Если он будет уничтожен и воссоздан на другом узле, содержимого пути к хосту может там не быть. В зависимости от того, что именно вы пытаетесь сохранить в томе, может быть более подходящим другой тип тома.

2. Я согласен с вами в отношении производственной среды. Этот пример выполняется на моем локальном компьютере только с одним узлом в кластере… путь к хосту всегда должен быть там.

3. Не могли бы вы попробовать /host_mnt/c/temp/es вместо /c/temp/es того, чтобы, как указано здесь ?

4. Я попытался использовать /host_mnt/c/temp/es, но это не сработало. Он ведет себя так, как описано в том смысле, что он запускается, но не совместно использует данные тома.

5. @dgestep Вы используете docker для рабочего стола или wsl?