LINUX.ORG.RU

Kubernetes cluster вопросы по high availability

 ,


0

3

Здравствуйте господа, хотелось бы поднять вопрос по реализации high availability в Kubernetes.

Я погуглил это вопрос и во всех статьях предполагается использование нескольких мастер нод. И вот тут у меня вопросы, не очень понятно, как они все согласованно работают?

Они (мастер ноды) все работают одновременно или одна из них является ведущей, а остальные просто поддерживают синхронизированное состояние с ней?

В случае выхода одной ноды из строя, у них есть какой-то внутренний механизм прихода к консенсусу или как это все работает?

Что будет, если нода, которая была недоступна, вдруг опять станет доступной, как кластер это обработает?

Если кто-то шарит в этом, расскажите на высоком уровне, как это все работает.

Я погуглил это вопрос и во всех статьях предполагается использование нескольких мастер нод. И вот тут у меня вопросы, не очень понятно, как они все согласованно работают?

Работают согласованно потому-что, все настройки кластера хранятся в реплецируемом хранилище etcd, которое может находится как на самой мастер ноде так и на выделенном хосте (возможные топологии).

Они (мастер ноды) все работают одновременно или одна из них является ведущей, а остальные просто поддерживают синхронизированное состояние с ней?

Трафик балансируется между мастер нодами loadbalancer’ом (haproxy, nginx…), трафик к кластеру приходит на ip адрес loadbalancer’а. И в любой момент времени если нода падает то loadbalancer перенаправляет запросы на рабочую мастер ноду.

В случае выхода одной ноды из строя, у них есть какой-то внутренний механизм прихода к консенсусу или как это все работает?

Работает система весов. При падении мастер нод, большинство оставшихся рабочих мастер нод имеют больший вес при согласовании данных, чем все остальные. (Здесь и ниже подразумеваю что хранилище настроек etcd находятся на тех же мастер нодах)
Минимальная конфигурация HA подразумевает три мастер ноды, чтобы если одна мастер нода упадет то оставшиеся две имели больший перевес. Если ничего не путаю поэтому и принято поднимать нечетное количество мастер нод, чтобы был перевес голосов при одновременном падении половины кластера.

Что будет, если нода, которая была недоступна, вдруг опять станет доступной, как кластер это обработает?

Синхронизирует данные с других нод.

Samamy ★★★
()
Последнее исправление: Samamy (всего исправлений: 1)
Ответ на: комментарий от Samamy

Спасибо за ответ. У меня такой вопрос, предположим у кластера есть 3 мастера, 2 из них перестали работать, как я понял оставшийся 1 мастер в этой ситуации перестает работать, т.к. не находит консенсуса большинства. Вопрос, можно ли в этой ситуации взбодрить кластер, например, создав нового мастера, чтобы тот оставшийся посчитал себя в большинстве. Или вообще как-то решить вопрос работоспособности кластера при полной потери 2 мастеров из 3х?

PS Мне интересно, на сколько реально развернуть HA k8s кластер на aws spot instances. Особенность этих spot instances в том, что amazon может их отозвать (убить) в любой момент c двух минутным предупреждением, но стоят они дешевле на 70-90% чем обычные (on demand instances). Таким образом, используя high availability подход, можно (в теории) избежать того, чтобы кластер упал :)

samson_b
() автор топика
Ответ на: комментарий от samson_b

…предположим у кластера есть 3 мастера, 2 из них перестали работать, как я понял оставшийся 1 мастер в этой ситуации перестает работать, т.к. не находит консенсуса большинства…

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

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

Нужно смотреть на практике, скорее всего должно сработать.

Samamy ★★★
()
Ответ на: комментарий от Samamy

Точно ответить не смогу, но думаю что нужно будет поднимать мастер ноды последовательно,

Главное, чтобы оставшаяся в живых мастер нода как-то отвечала, т.к. с нее надо будет получить токен, чтобы добавить новую мастер ноду в кластер.

Спасибо, короче, надо попробовать это все настроить и посмотреть как оно ведет себя в бою.

samson_b
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.