# #google-cloud-platform #devops #google-kubernetes-engine #nfs #google-cloud-filestore
Вопрос:
Я пытаюсь подключить экземпляр хранилища файлов к моему кластеру GKE. У меня есть два развертывания в моем кластере GKE, запись в два отдельных тома. требования. Что я хочу знать, так это:
- возможно ли, чтобы у меня была центральная nfs с моим единственным экземпляром хранилища файлов Google?
- как я могу создавать папки внутри экземпляра filestore и чтобы мои модули взаимодействовали с ним без помех?
Другой вариант, который я вижу, это создать два разных хранилища файлов — это, кажется, решает мою проблему, но в настоящее время я настраиваю свою кластерную архитектуру, и это кажется огромной тратой ресурсов (у меня ~ 1 ТБ данных, но мои модули используют около 50 ГБ каждый — поэтому я думал о разделении, нодокументы GCP слишком загадочны)
Любые другие предложения по поводу того, чего я пытаюсь достичь, также приветствуются 🙂
Комментарии:
1. Вы пробовали эту ссылку для доступа к общим файлам из кластеров движка Google Kubernetes .
2. попробовал, не получилось
Ответ №1:
Тома хранилища файлов поддерживают функцию ReadWriteMany, поэтому вы можете смонтировать один и тот же PV на нескольких модулях для доступа на запись. Вы бы создали один PersistentVolumeClaim с режимами доступа, установленными на ReadWriteMany:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: sharedpvc
spec:
accessModes:
- ReadWriteMany
storageClassName: standard-rwx
resources:
requests:
storage: 1Ti
а затем смонтировать его в каждом из ваших развертываний
volumes:
- name: shared
persistentVolumeClaim:
claimName: sharedpvc
Таким образом, один и тот же экземпляр хранилища файлов теперь смонтирован в модулях / развертываниях, но вам все равно нужно использовать свой собственный механизм, чтобы гарантировать, что модули не будут перегружать данные друг друга. Здесь я бы рассмотрел два варианта:
- используйте отдельный префикс для всех файлов, записанных для каждого развертывания
- создайте каталог внутри тома для каждого развертывания
Вы не можете создавать отдельные разделы и не можете ограничить размер хранилища для каждого развертывания. Но таким образом вы можете иметь несколько модулей, записывающих в один и тот же экземпляр, а не создавать несколько экземпляров объемом 1 ТБ.
Комментарии:
1. да, хорошо — я только что решил это сегодня с помощью того, что вы предложили — мне также удалось заставить часть подкаталогов работать, используя виртуальную машину bastion из gce
2. У меня есть несколько папок в хранилище файлов, по одной для каждого модуля. Я хочу смонтировать одну папку в один модуль по местоположению
/mnt/data
? Возможно ли это? Скажемfilestore/pod1
, монтируется/mnt/data
для pod1, аfilestore/pod2
папка монтируется/mnt/data
в pod2.
Ответ №2:
В дополнение к ответу Гари, причина, по которой невозможно выполнить разделение:
Просто чтобы уточнить, Google Cloud Filestore — это NFS-сервер. Таким образом, он не является «разделенным» (им являются только блочные устройства), скорее у него есть концепция «экспорта общих ресурсов», и каждый общий ресурс может быть смонтирован одним или несколькими клиентами. При монтировании общий ресурс отображается для клиента как единый каталог файловой системы.
Ваши варианты следующие:
- используйте один общий ресурс, прикрепите его как PV в Kubernetes, затем создайте каталоги в этом одном общем ресурсе в соответствии с их структурой Pod (ответ Гари); или
- используйте несколько общих ресурсов, каждый из которых соответствует группе модулей или служб, и прикрепите каждый общий ресурс к K8s как отдельный PV (не идеально, исходя из вашего варианта использования).
Ключевым моментом здесь является то, что все общие ресурсы хранилища файлов экспортируются в NFS, поэтому их можно увидеть из K8s как PV соответствующего типа.