#mysql #database #kubernetes #production-environment
#mysql #База данных #kubernetes #производственная среда
Вопрос:
Разумно ли использовать Kubernetes для кластеризованной базы данных, такой как MySQL, в рабочей среде?
Существуют примеры конфигураций, такие как пример mysql galera. Однако в большинстве примеров не используются постоянные тома. Насколько я понял, постоянные тома должны находиться в некоторой общей файловой системе, как определено здесь Типы постоянных томов Kubernetes. Общая файловая система не гарантирует, что файлы базы данных модуля будут локальными на компьютере, на котором размещен модуль. Доступ к ней будет осуществляться по сети, что довольно медленно. Кроме того, есть проблемы, например, с MySQL и NFS.
Это может быть приемлемо для тестовой среды. Однако, что я должен делать в производственной среде? Не лучше ли запускать кластер базы данных вне Kubernetes и запускать только серверы приложений с Kubernetes?
Ответ №1:
В проекте Kubernetes были представлены PetSets, новая абстракция управления pod, предназначенная для запуска приложений с отслеживанием состояния. В настоящее время это альфа-функция (начиная с версии 1.4) и она быстро развивается. Здесь приведен список различных проблем, возникающих при переходе к бета-версии. Цитирую из раздела о том, когда использовать petsets:
Набор домашних животных гарантирует, что указанное количество «домашних животных» с уникальными идентификаторами запущено в любой момент времени. Идентификатор Pet состоит из:
- стабильное имя хоста, доступное в DNS
- порядковый индекс
- стабильное хранилище: привязано к порядковому номеру и имени хоста
В дополнение к вышесказанному, она может быть объединена с несколькими другими функциями, которые помогают развертывать кластеризованные приложения с отслеживанием состояния и управлять ими. Например, в сочетании с динамическим выделением тома, это может использоваться для автоматического выделения хранилища.
Доступно несколько конфигурационных файлов YAML (таких как те, на которые вы ссылались), использующих наборы реплик и развертывания для MySQL и других баз данных, которые могут запускаться в рабочей среде и, вероятно, также запускаются таким образом. Однако ожидается, что PetSets значительно упростят запуск этих типов рабочих нагрузок, поддерживая обновления, обслуживание, масштабирование и так далее.
Вы можете найти несколько примеров распределенных баз данных с petsets здесь.
Преимущество предоставления постоянных томов, которые подключены к сети и нелокальны (например, GlusterFS), реализуется в масштабе. Однако для относительно небольших кластеров есть предложение разрешить в будущем использовать постоянные тома локального хранилища.