• Русский
  • Понимание MetalLB

    Содержание

    Терминология

    ТерминОписание
    VIPВиртуальный IP-адрес (VIP) — это IP-адрес, назначаемый MetalLB для внутренней маршрутизации типа LoadBalancer, обеспечивающий единый точку доступа для внешнего трафика к сервисам внутри кластера.
    ARPПротокол разрешения адресов (ARP) используется для сопоставления IP-адресов сетевого уровня с MAC-адресами канального уровня.
    GARPGratuitous ARP (GARP) — это специальный ARP-запрос, используемый для информирования других узлов в сети о привязке IP-адреса к MAC-адресу. В отличие от обычных ARP-запросов, GARP не ожидает ответов, а активно рассылает информацию по сети.
    ARP ResponderКомпонент MetalLB, отвечающий на ARP-запросы, сопоставляя VIP с MAC-адресом узла. Когда узлу необходимо связаться с VIP, он отправляет ARP-запросы для получения MAC-адреса, соответствующего VIP. Каждый доступный узел имеет ARP Responder, который отвечает на эти запросы, сопоставляя VIP с MAC-адресом узла.
    ControllerКомпонент MetalLB, который динамически выделяет VIP из пула внешних адресов для внутренней маршрутизации типа LoadBalancer. Controller отслеживает события создания и удаления внутренних маршрутов в кластере для выделения или освобождения VIP по мере необходимости.
    SpeakerКомпонент MetalLB, который на основе политик или алгоритмов определяет, должны ли узлы размещать VIP и отправлять GARP. Он обеспечивает определённый уровень баланса между узлами, и при недоступности одного узла другие узлы могут взять на себя VIP и отправить GARP, обеспечивая тем самым высокую доступность.

    Принципы высокой доступности в 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, и один резервный узел, что даёт по два доступных узла для каждого из двух пулов внешних адресов.

    Дополнительные ресурсы