Понимание MetalLB
Содержание
Терминология
Принципы высокой доступности в MetalLB

По умолчанию платформа использует ARP-режим MetalLB, а конкретный процесс реализации и принципы следующие:
-
Компонент Controller MetalLB выбирает IP-адрес из пула внешних адресов и выделяет его для внутренней маршрутизации типа LoadBalancer в качестве VIP.
-
MetalLB выбирает доступный узел для размещения VIP на основе алгоритма, который затем перенаправляет трафик.
-
Компонент Speaker на этом узле активно отправляет GARP, устанавливая связь между VIP и MAC-адресом на всех узлах.
-
Узлы в одной подсети, узнав о сопоставлении VIP с MAC-адресом доступного узла, будут напрямую взаимодействовать с этим узлом при обращении к VIP.
-
Узлы в разных подсетях сначала направляют трафик на шлюз своей подсети, который затем перенаправляет трафик на узел, размещающий VIP.
-
-
При сбое этого узла MetalLB выбирает другой доступный узел для размещения VIP, обеспечивая тем самым высокую доступность.
-
Попав на узел, Kube-Proxy перенаправляет трафик соответствующему Pod.
Алгоритм MetalLB для выбора узлов-хозяев VIP
MetalLB хеширует все доступные узлы, соответствующие пулу внешних адресов, вместе с VIP и сортирует их по определённому алгоритму, выбирая первым доступным узлом для размещения VIP.
Пулы внешних адресов и количество узлов
Создайте пул внешних адресов и добавьте доступные узлы. Все доступные узлы поддерживают резервные отношения, то есть только узел, размещающий VIP, может перенаправлять трафик, и он должен обрабатывать весь трафик для VIP из пула внешних адресов.
Формула расчёта
Формула: Количество пулов внешних адресов = ceil(n-vip / n-node), где ceil — округление вверх.
Примечание: При использовании виртуальных машин количество виртуальных машин = Количество пулов внешних адресов * n. Здесь n должно быть больше 2, при этом допускается отказ не более одного узла.
-
n-vip: количество VIP.
-
n-node: количество VIP, которое может обслуживать один узел.
Пример применения
Если в компании 10 VIP, и каждый доступный узел может обслуживать 5 VIP, при этом допускается отказ одного узла, как компании спланировать количество пулов внешних адресов и доступных узлов?
Анализ:
Требуется всего два пула внешних адресов и четыре доступных узла.
-
Каждый доступный узел может обслуживать максимум 5 VIP, значит один пул внешних адресов может вместить 5 VIP, следовательно, для 10 VIP требуется два пула внешних адресов.
-
При допущении отказа одного узла каждый пул должен включать один узел, размещающий VIP, и один резервный узел, что даёт по два доступных узла для каждого из двух пулов внешних адресов.