Уместно ли хранить базу данных в постоянном томе Kubernetes (и как сделать резервную копию?)

У меня есть веб-приложение, работающее в кластере Google Kubernetes. Мое веб-приложение также использует постоянные тома для нескольких баз данных MongoDB для хранения данных пользователей и приложений.

(1) Таким образом, мне интересно, практично ли хранить все данные в этих постоянных томах в долгосрочной перспективе?

(2) Существуют ли какие-либо методы безопасного резервного копирования постоянных томов, например еженедельно (автоматически)?

(3) Я также планирую интегрировать в приложение своего рода загрузку файлов. Могут ли постоянные тома хранить много ГБ / ТБ данных, или мне следует выбрать что-то вроде облачного хранилища Google в этом случае?


person Florian Ludewig    schedule 13.02.2020    source источник
comment
Используйте для резервного копирования вариант моментальный снимок тома   -  person DT.    schedule 13.02.2020


Ответы (2)


Развертывание приложений с сохранением состояния на K8s немного болезненно, что хорошо известно в сообществе K8s. Обычно, если нам нужна высокая доступность для БД, которые предполагается развернуть в кластерном режиме. Но в K8s, если вы хотите развернуть в кластерном режиме, вам нужно проверить StatefulSets концепцию. В любом случае, я вставляю ссылки на ваши вопросы, чтобы вы могли начать с них.

(1) Таким образом, мне интересно, практично ли хранить все данные в этих постоянных томах в долгосрочной перспективе?

(2) Существуют ли какие-либо методы безопасного резервного копирования постоянных томов, например еженедельно (автоматически)?

  1. Снимки постоянных томов
  2. Volume Snapshot (бета из документации K8s). Вы можете найти в Google еще больше документов.

(3) Я также планирую интегрировать в приложение какую-нибудь загрузку файлов. Могут ли постоянные тома хранить много ГБ / ТБ данных, или мне следует выбрать что-то вроде облачного хранилища Google в этом случае?

  • Не уверен, он может содержать ТБ! ?? но определенно, если у вас есть облако, рассмотрите возможность его использования
person Veerendra Kakumanu    schedule 13.02.2020

Да, вы можете использовать PVC в Kubernetes для хранения данных. Однако это зависит от варианта использования и размера вашего приложения.

В kubernetes вы можете развернуть Mongo DB как кластер и запустить его, который хранит данные внутри PVC. Управляющая диаграмма MongoDB, доступная для HA, вы также можете найти ее.

Таблица штурвала: https://github.com/helm/charts/tree/master/stable/mongodb

Предлагается использовать один модуль или набор состояний MongoDB на Kubernetes.

Резервное копирование:

Для резервного копирования базы данных MongoDB вы можете выбрать еженедельное создание снимка дискового хранилища (PVC), однако вместе с этим вы также можете использовать снимок Mongo.

Большинство людей предпочитают управлять услугами, но все же это зависит также от вашей организации.

Метод резервного копирования

  • Снимок MongoDB
  • Снимок дискового хранилища

Файловая система:

Да, он может обрабатывать ТБ данных, поскольку в конечном итоге это дисковый том или файловая система.

Да, вы можете использовать PVC в качестве файловой системы, но позже в будущем у вас могут возникнуть проблемы с масштабированием, так как PVC - это ReadWriteOnce, если вы хотите масштабировать приложение вместе с PVC, вам необходимо реализовать ReadWriteMany .

Существует несколько способов добиться этого: вы также можете напрямую подключить файловую систему к модулю, например AWS EFS, но вы можете найти это медленным для файловых операций.

Для файловой системы в Kubernetes доступны различные параметры, такие как драйвер csi, gluster FS, minio, EFS.

person Harsh Manvar    schedule 13.02.2020
comment
вы можете использовать NFS для PVC, что позволит readWriteMany - person Patrick W; 14.02.2020