Как инициализировать динамически подготовленный постоянный диск - PullRequest
0 голосов
/ 25 февраля 2019

В настоящее время я исследую использование постоянных дисков с динамической подготовкой в ​​приложении GCE: в моем приложении есть 1-n модулей, в которых каждый модуль содержит один контейнер, для которого требуется постоянный доступ к постоянному тому.Том должен быть предварительно заполнен некоторыми данными, которые копируются из корзины.

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

Как сделатьЯ гарантирую, что постоянный диск будет предварительно заполнен до того, как он будет смонтирован на моем модуле?

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

Примечание: я использую отдельный постоянный диск, так как мне нужно, чтобы он был ssd для скорости.

1 Ответ

0 голосов
/ 25 февраля 2019

Похоже, что копия является хорошим кандидатом для использования в качестве «контейнера инициализации» .

Таким образом, при каждом запуске модуля «контейнер инициализации» будет подключаться к GCS.составить и проверить состояние данных и, если необходимо, скопировать данные в динамически назначенный PersistentDisk.

По завершении запускается основной контейнер модуля с данными, готовыми для использования.Используя «контейнер init», вы гарантируете, что:

  1. Копирование завершено до запуска вашего основного контейнера pod.

  2. Основной контейнерне требуется доступ к GCS, только динамически созданный PV.

  3. Если «контейнер инициализации» не завершится успешно, то ваш модуль не сможет запуститься и оказаться в состоянии ошибки.

Используемый в сочетании с StatefulSet из N модулей, этот подход хорошо работает с точки зрения возможности инициализации новой реплики с новым диском и сохранения постоянных данных в основном контейнере.Обновление изображения (кода).

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