Насколько я понимаю, все реплики будут иметь одинаковый pv.
Это правильно. При создании HostPath PV или локального хранилища PV все реплики будут работать как положено. Но с kubernetes вы можете динамически создавать PersistentVolume (используя StorageClasses). Проблема второго подхода заключается в том, что том будет привязан только к одному модулю, а остальные ваши реплики могут выдать следующую ошибку:
Multi-Attach error for volume "pvc-XXXX" Volume is already used by pod(s) YYYY
(я говорю , может , потому что это зависит по типу тома).
Если за pv c у нас есть hostPath pv, я понимаю, что он не поддерживается, когда номер узла кластера> 1, так как мы не можем синхронизироваться c том.
Я не уверен, что вы понимаете идею томов hostPath. Тома HostPath используются для доступа к данным на хостах. Считается плохой практикой использовать hostpath для хранения данных приложения. HostPath обычно используется только с daemonsets и очень специфичными для приложения c рабочими нагрузками.
Чтобы ответить на часть syn c; Вы правы, вы не можете синхронизировать c hostPaths, если он не указывает на монтированное хранилище NFS или подобное.
Чтобы исправить это, существует локальный постоянный том, где мы определяем сходство между узлом, в котором том находится и под, используя громкость. Так что планировщик всегда развертывает модуль на узле (предотвращает, в частности, потерю данных). Что произойдет, если у нас будет несколько реплик, будут ли все реплики развернуты на одном узле?
Да, все реплики будут развернуты на одном узле. Это не лучший вариант, потому что когда указанный узел c выходит из строя, все реплики вашего приложения go отключаются вместе с ним, и приложение больше не может называться высокодоступным.