Наличие столько модулей, сколько узлов

#mysql #kubernetes #replicaset

#mysql #kubernetes #набор реплик

Вопрос:

В настоящее время мы используем 2 узла, но в будущем нам может понадобиться больше.

StatefulSets — это mariadb-galera, текущая реплика равна 2.

Когда у нас появятся новые узлы, мы хотим, чтобы реплика была 3, если она нам больше не нужна, и мы удаляем ее или другой узел, который мы хотим, чтобы он был 2.

На самом деле, если у нас есть 3 узла, нам нужно 3 реплики по одному на каждом узле.

Я мог бы использовать ограничения распространения топологии Pod, но у нас будет куча «не запланированных» модулей.

Есть ли способ автоматически изменять количество реплик при каждом добавлении или удалении узлов?

Ответ №1:

Когда у нас появятся новые узлы, мы хотим, чтобы реплика была 3, если она нам больше не нужна, и мы удаляем ее или другой узел, который мы хотим, чтобы он был 2.

Я бы рекомендовал сделать это наоборот. Управляйте репликами рабочей нагрузки вашего контейнера и после этого разрешайте регулировать количество узлов.

См., Например, Автоскалер кластера, чтобы узнать, как это можно сделать, это зависит от того, какой облачный провайдер или среда использует ваш кластер.

Также важно указать ваши запросы к процессору и памяти таким образом, чтобы они занимали все узлы.

Для MariaDB и подобной рабочей нагрузки вы должны использовать StatefulSet , а не DaemonSet .

Ответ №2:

Вы могли бы использовать набор демонов https://kubernetes.io/docs/concepts/workloads/controllers/daemonset /

Что гарантирует наличие одного модуля на узел.

Набор демонов гарантирует, что все (или некоторые) узлы запускают копию модуля. По мере добавления узлов в кластер к ним добавляются модули. Поскольку узлы удаляются из кластера, эти модули собираются как мусор. Удаление набора демонов приведет к очистке созданных им модулей.

Кроме того, не рекомендуется запускать базу данных в чем-либо другом, кроме statefulset, из-за концепции идентификации pod, которую имеют statefulset.

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

Комментарии:

1. Хотя это ответ на половину проблемы, будьте осторожны, поскольку наборы демонов не имеют той же концепции «Pod identity», что и StatefulSet; Я никогда не выступаю за запуск базы данных в кластере как что-либо, кроме StatefulSet