Может ли несколько PersistentVolumeClaims связываться с одним и тем же локальным хранилищем PersistentVolume? - PullRequest
0 голосов
/ 20 февраля 2019

Я хочу знать, возможно ли, чтобы несколько PersistentVolumeClaims связывались с одним и тем же локальным постоянным томом .

Мой вариант использования, если следующее: Я хочу создать Daemon Set, который будетзаписать некоторые данные (фактически те же самые данные) на каждом узле в моем кластере (на локальном диске узла).Затем любой другой модуль, запланированный на любом узле, должен иметь возможность читать эти данные.В основном это своего рода политика «однажды прочитал много» на уровне узла.

Я знаю, что могу сделать это, используя тип тома hostPath , но управлять им немного сложнопоэтому я обнаружил, что лучше использовать локальное хранилище.

Мое желание будет следующим:

  • Создать локальный постоянный том (с именем pv) с помощью ReadWriteOnce и ReadOnlyMany режимы доступа
  • Создание первого утверждения постоянного тома (pvc1) с режимом доступа ReadWriteOnce и использование его в DaemonSet, который записывает данные вобъем.Поэтому pvc1 должен быть привязан к pv
  • Создать второе постоянное утверждение тома (pvc2) с режимом доступа ReadOnlyMany , который используется в любом другом модуле.который читает эти данные (поэтому pvc2 должен также связываться с pv )

Возможно ли это?

Я прочитал это, если PVCограничен PV, то этот PV "заблокирован", что означает, что никакой другой PVC не может связываться с ним.Это действительно, как это работает?Может показаться немного ограничивающим для такого рода сценариев, где у нас есть операции «однократная запись-многократное чтение».

Спасибо!

1 Ответ

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

DaemonSets и PVCs для типов томов RWO плохо смешиваются, потому что все DaemonSets будут использовать один и тот же PVC.А для локальных томов это может привести к планированию только одной реплики, поскольку это ограничивает все модули, использующие этот PVC, только для одного узла.

Вы можете решить эту проблему, используя StatefulSet, который поддерживает volumeClaimTemplates, который создает PVC для реплики и масштабирует его до количества узлов в кластере.Тем не менее, ваши пользовательские модули должны будут знать и выбирать конкретный PVC для использования, а не использовать то, что находится на этом узле.

Я думаю, что ваш вариант использования будет лучше решен путем написания драйвера CSI.Он имеет компонент DaemonSet, который при запуске драйвера может инициализировать данные.Затем, когда он реализует NodePublishVolume (он же монтируется в модуль), он может подключить каталог данных в контейнер модуля.Вы можете сделать этот тип тома RWX, и вам, вероятно, не потребуется реализовывать какие-либо подпрограммы контроллера для обеспечения или подключения.

...