Настройка локального постоянного тома на физических машинах с Kubernetes - PullRequest
1 голос
/ 10 июля 2019

Позвольте мне сначала сделать заявление: я новичок в Kubernetes, будьте осторожны, если я задаю неправильные вопросы.

Хорошо, вот что я собираюсьделать.Я планирую собрать Kubernetes для своего проекта, используя несколько физических машин .

. У меня есть 1 сервер для главного и 2 рабочих узла.Мои сервисные докеры (pods) будут выделены мастером Kubernetes, им понадобится хранилище для базы данных (MySQL).

После поиска я нашел решение Persistent Volume, но я неЯ хочу использовать эти облачные онлайн-сервисы, такие как Google Cloud или Azure Cloud и т. д. Это приводит меня к другому решению - Local Persistent Volume (LPV), это то, где я застрял в настоящее время.

Проблема с LPV в том, что он связан с определенным узлом, поэтому я не смог бы реплицировать (сделать резервную копию) базу данных на других узлах, если что-то случится с этим узлом или что-то не так сфизический диск, я потеряю все базы данных, верно?

Вопрос в том, существуют ли какие-либо решения для настройки репликации в базе данных с использованием Local Persistent Volume?Например, у меня есть база данных на Node 1 и резервная версия на Node 2 , поэтому, когда Node 1 недоступен, модули будут монтироваться врезервная база данных на Node 2 .

Заранее спасибо!

1 Ответ

2 голосов
/ 10 июля 2019
  1. Вы можете развернуть базу данных как набор состояний с использованием локальных томов на узлах. Просто создайте тома и поместите их в класс хранения

  2. Для резервного копирования необходимо настроить репликацию на уровне базы данных (не на уровне тома) для какого-либо другого кластера / другого экземпляра базы данных, запущенного где-то еще / или в каком-либо другом кластере.

  3. Отказы стручка обрабатываются kubernetes в любом случае, он перезапустит стручок, если у него не получится.

  4. Сбои узла не могут быть обработаны в statefulset (один узел не может заменить другой, другими словами, в statefulset модуль не будет перезапущен на другом узле, kubernetes будет ждать возвращения узла), Независимо от того, используете ли вы постоянные тома локально или удаленно, наборы статов для баз данных будут привязаны к заданным узлам. Но сбои узла могут обрабатываться самим приложением, если он работает как кластер

  5. Если вы собираетесь использовать простое развертывание с одним модулем, а не набор состояний, вы можете развернуть базу данных как один модуль, а другой экземпляр - как один модуль и использовать селектор узлов для запуска их на разных узлах, а затем настроить репликацию с одного экземпляр на другой экземпляр на уровне базы данных и настройте клиентское приложение для переключения на резервный экземпляр, если основной недоступен, это должна быть синхронная репликация.

Ссылки:

Запуск приложения с состоянием из одного экземпляра (MYSQL)

Запуск реплицированного приложения с отслеживанием состояния (MYSQL)

...