Том Docker с моего ноутбука на постоянный том в Google Cloud Kubernetes

Образ докера, запущенный на моем ноутбуке с папкой тома докера myVolume внутри, привязан к папке на моем рабочем столе (может быть любой каталог на хост-машине) Desktop-Volume :

docker run -it -v ~ / Desktop / Desktop-Volume: / myVolume ..

Внутри Desktop-Volume есть файлы и папки, когда приложение docker запускает, эта папка заполняется новыми созданные файлы, которые, конечно же, после выключения докера остаются в Desktop-Volume ,

. Теперь я создаю кластер Kubernetes в Google Cloud, создаю PersistentVolumes и запускаю развертывание , но контейнер выходит из строя, потому что он зависит от предварительно обработанных Desktop-Volume для инициализации , поэтому мне нужно поместить эти файлы в PersistentVolumes перед запуском мой контейнер в кластере Kubernetes, но я не знаю как.

Под был примерно такой [1 278] Я также пробовал:

https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#create-a-persistentvolume

i connect в оболочку кластера и оттуда загрузите Desktop-Volume.zip с моего ноутбука в оболочку, затем распакуйте и установите

  hostPath:
    path: "/home/<name>/Desktop-Volume"

, но контейнер разбился нет такого файла или каталога ссылаясь на файлы, которые находятся в myVolume - Desktop-Volume

  1. , как я могу поместить содержимое моих предварительно обработанных файлов Desktop-Volume в PersistentVolumes перед запуском контейнера на кластер?
  2. где находится путь монтирования PersistentVolumes, чтобы я мог ls туда и видеть свои файлы?
0
задан 22 August 2019 в 13:57
2 ответа

Похоже, вашему контейнеру требуется предварительно заполненный том для запуска. Вы можете использовать hostPath, как вы упомянули, но это не рекомендуется по нескольким причинам. Вместо этого вы перенесете свои данные на GCE PD, убедитесь, что ваш PV использует этот уже существующий диск, а затем подключите его к своему модулю. Вот некоторые подробности:

1. Скопируйте данные на GCE PD: Разверните виртуальную машину, затем либо перенесите данные с локального компьютера на виртуальную машину , либо создайте файловую систему и подготовьте файлы, необходимые непосредственно с виртуальной машины, а не с локальной машины. .

2. Подготовьте диск GCE для использования PV: Либо отсоедините диск GCE от виртуальной машины , либо сделайте моментальный снимок диска и создайте новый GCE PD из моментального снимка.

3. Создайте PV для использования диска: Важно внимательно следовать документации для этого шага. Поведение PVC по умолчанию в GKE должно быть предоставлено динамически с использованием StorageClass . Вместо этого мы хотим убедиться, что PV создается первым и явно нацелен на GCE-PD.У GCP есть хорошее руководство о том, как это сделать.

4. Создайте PVC для нацеливания на PV: Как я уже упоминал, поведение по умолчанию будет заключаться в динамическом создании нового диска, который будет пустым новым диском. Обязательно внимательно следуйте инструкциям по . Если какое-либо из полей установлено неправильно, будет создан другой PV.

5. Установите PVC в свой модуль: Прежде всего, обратите внимание, что диски GCE не поддерживают чтение / запись большого количества файлов, поэтому этот PVC может использоваться только одним модулем.

Если вам нужно иметь более одного модуля, вам потребуется создать несколько PVC, используя описанные выше шаги. Если файлы и файловая система, необходимые для контейнера, должны быть доступны только для чтения, у вас есть два других варианта, чтобы упростить задачу:

  1. Создайте диск GCE в режиме readOnlyMnay, таким образом, один и тот же PVC может использоваться в нескольких модулях.

  2. Используйте configMap со всеми необходимыми файлами. Это требует немного большего планирования, чтобы убедиться, что все соответствующие файлы находятся в нужном месте

0
ответ дан 5 December 2019 в 01:17

Если я понимаю ваши вопросы, вам нужен PersistentVolume, который будет вести себя так же, как ваша локальная папка на рабочем столе, когда он используется в качестве тома на локальной установке докеров.

PersistentVolume поддерживается постоянными дисками Compute Engine, то есть, чтобы получить доступ к диску, вам нужно подключить его к ВМ для использования, например, this. Я думаю, что вам нужно более гибкое решение, чем PersistentVolumnes на GKE, потому что вы хотите использовать различные точки монтирования (ваш локальный рабочий стол и кубернеты).

Можно использовать Cloud Storage FUSE, этот адаптер позволяет монтировать ведро Cloud Storage как файловую систему, можно монтировать его на рабочий стол, другую ВМ и кубернету.

Другой вариант - Vault.

Regards.

.
0
ответ дан 5 December 2019 в 01:17

Теги

Похожие вопросы