#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?