Kubernetes: Как управлять данными с несколькими репликами? - PullRequest
0 голосов
/ 21 мая 2019

В настоящее время я изучаю Kubernetes, и я застрял в том, как справиться со следующей ситуацией:

У меня есть приложение Spring Boot, которое обрабатывает файлы (фотографии, PDF и т. Д.), Загруженные пользователями,пользователи могут также загрузить эти файлы.Это приложение также производит журналы, которые распространяются в 6 различных файлов.Чтобы сделать мою жизнь проще, я решил создать корневой каталог, содержащий 2 подкаталога (1 каталог для данных пользователей и 1 для журналов), чтобы приложение работало только с 1 каталогом (appData)

.appData
     |__ usersData
     |__ logsFile

Я быЯ хотел бы использовать GKE (Google Kubernetes Engine) для развертывания этого приложения, но у меня есть следующие проблемы:

  • Как обрабатывать несколько реплик, которые будут одновременно считывать / записывать данные + журналы в appDataкаталог?
  • Что касается журналов, возможно ли иметь несколько модулей, записывающих в один файл?
  • Скажем, у нас есть 3 реплики (Pod-A, Pod-B и Pod-C), если пользователь A загружает файл, обрабатываемый Pod-B, как Pod-A и Pod-C обнаружат этот файл, если один и тот же пользователь позже запросит его файл?
  • Должна ли каждая реплика иметь свой собственный том?(Я хотел бы избежать этой ситуации, которая, кажется, имеет место при использовании StatefulSet)
  • Должна ли я иметь только одну реплику?(использование Kubernetes будет бесполезно в этом случае)

Те же вопросы о репликах базы данных.Я использую PostgreSQL и у меня такие же вопросы.Если у нас есть несколько реплик, так как запросы произвольно отправляются в реплики, как быть уверенным, что запрашивающие данные вернут результат?

Я знаю, что здесь много вопросов.Большое спасибо за ваши разъяснения.

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Я бы сделал два отдельных решения для журналов и для общих файлов.

Для журналов посмотрите на агрегатор журналов как fluentd.

Для совместно используемой файловой системы вам нужна NFS.Взгляните на этот пример: https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs. NFS будет использовать постоянный том из GKE, Azure или AWS.Это не является независимым от облачных вычислений само по себе, но единственное, что вы изменяете, это ваш поставщик, если вы хотите работать в другом облаке.

1 голос
/ 21 мая 2019

Вы можете использовать постоянный том с помощью NFS в GKE (Google Kubernetes Engine) для обмена файлами между модулями. https://cloud.google.com/filestore/docs/accessing-fileshares

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