Omówienie usługi MetalLB dla klastrów Kubernetes
Dotyczy: Azure Local, wersja 23H2
Podczas konfigurowania klastra usługi AKS Arc potrzebny jest sposób, aby usługi były dostępne poza klastrem. Typ LoadBalancer
jest idealny dla tej ułatwień dostępu, ale zewnętrzny adres IP pozostaje oczekujący. Rozszerzenie dla usługi Kubernetes z włączoną usługą MetalLB dla usługi Azure Arc to narzędzie, które umożliwia generowanie zewnętrznych adresów IP dla aplikacji i usług. Klastry Kubernetes z obsługą usługi Arc mogą integrować się z usługą MetalLB przy użyciu rozszerzenia Dla usługi Kubernetes z włączoną usługą Azure Arc.
Aby usługi były dostępne poza klastrem, usługa MetalLB wymaga adresów IP. Usługa MetalLB zajmuje się przypisywanie i wydawanie tych adresów w razie potrzeby podczas tworzenia usług, ale dystrybuuje tylko adresy IP, które znajdują się w skonfigurowanych pulach. Gdy usługa MetalLB przypisuje zewnętrzny adres IP do usługi, informuje sieć poza klastrem, że ten adres IP należy do klastra. Ta komunikacja odbywa się przy użyciu standardowych protokołów sieciowych, takich jak ARP lub BGP.
- Tryb warstwy 2 (ARP): w trybie warstwy 2 jeden węzeł K8s w klastrze przejmuje własność usługi i używa standardowych protokołów odnajdywania adresów (ARP dla IPv4), aby te adresy IP były osiągalne w sieci lokalnej. Z punktu widzenia sieci LAN ogłoszenie maszyny po prostu ma wiele adresów IP.
- Protokół BGP: w trybie BGP wszystkie maszyny w klastrze ustanawiają sesje komunikacji równorzędnej BGP z pobliskimi routerami, które kontrolujesz, i poinformuj te routery, jak przekazywać ruch do adresów IP usługi. Użycie protokołu BGP umożliwia rzeczywiste równoważenie obciążenia w wielu węzłach i szczegółowe sterowanie ruchem ze względu na mechanizmy zasad protokołu BGP.
System MetalLB ma dwa składniki:
- Kontroler: odpowiedzialny za przydzielanie adresu IP dla każdej usługi programu
type=loadbalancer
. - Prelegent: odpowiedzialny za reklamowanie adresu IP przy użyciu
ARP
lubBGP
protokołu. Aby spełnić wymagania dotyczące wysokiej dostępności (HA), wdrożenie osoby mówiącej jest demonem.
Uwaga
- Zasobniki głośników używają sieci hosta; tj. ich adres IP to adres IP węzła, dzięki czemu mogą bezpośrednio wysyłać komunikaty rozgłaszane za pośrednictwem interfejsu sieciowego hosta.
- Zasobnik kontrolera to normalny zasobnik, który znajduje się w dowolnym węźle w klastrze.
- W trybie ARP jeden z zasobników głośników jest wybierany jako lider. Następnie anonsuje adres IP przy użyciu komunikatu emisji ARP, powiązanie adresu IP z adresem MAC węzła, w nim znajduje się. W związku z tym cały ruch najpierw trafia do jednego węzła, a następnie serwer kube-proxy rozkłada go równomiernie na wszystkie zasobniki zaplecza usługi.
- W trybie BGP wszystkie węzły klastra nawiązują połączenia ze wszystkimi elementami równorzędnymi BGP utworzonymi na
BGP Peers
karcie. Zazwyczaj element równorzędny BGP jest przełącznikiem TOR. Aby rozgłasić informacje o routingu protokołu BGP, należy skonfigurować równorzędne elementy równorzędne protokołu BGP, aby rozpoznawały adres IP i numer ASN węzłów klastra. W przypadku korzystania z protokołu BGP z funkcją ECMP (MultiPath równego kosztu) ruch jest osiągany równomiernie we wszystkich węzłach i w związku z tym osiąga prawdziwe równoważenie obciążenia.
Porównanie trybów MetalLB L2 (ARP) i BGP
Wybór między trybem L2 i BGP z usługą MetalLB zależy od konkretnych wymagań, infrastruktury sieciowej i scenariuszy wdrażania:
Aspekt | MetalLB w trybie L2 (ARP) | MetalLB w trybie BGP |
---|---|---|
Omówienie | W trybie warstwy 2 jeden węzeł K8s przejmuje odpowiedzialność za reklamę usługi w sieci lokalnej. Z perspektywy sieci wygląda na to, że węzeł K8s ma wiele adresów IP przypisanych do interfejsu sieciowego. | W trybie BGP każdy węzeł K8s w klastrze ustanawia sesję komunikacji równorzędnej BGP z routerami sieciowymi i używa tej sesji komunikacji równorzędnej do anonsowania adresów IP usług klastra zewnętrznego. |
Przypisanie adresu IP | Pule adresów IP systemu MetallLB muszą znajdować się w tej samej podsieci co węzły K8s. | Pule adresów IP systemu MetallLB mogą znajdować się w innej sieci niż węzły K8s. |
Złożoność konfiguracji | Niski. Ponieważ udostępniasz adresy IP w tej samej sieci co węzły kubernetes, podczas konfigurowania usługi MetalLB wystarczy określić trasę CIDR ip lub pulę adresów IP. | Wysoka. Konfigurowanie protokołu BGP wymaga znajomości protokołu BGP i zrozumienia infrastruktury sieciowej. |
Skalowalność | Ograniczone do sieci warstwy 2, odpowiednie dla małych i średnich wdrożeń K8s. | Nadaje się do złożonych topologii sieci i wdrożeń K8s na dużą skalę. |
Zgodność z siecią infrastruktury | Działa z dowolną siecią, ale może powodować powodzie ARP w dużych klastrach K8s, ponieważ pojedynczy adres IP jest używany dla wszystkich usług, a przepustowość ruchu przychodzącego usługi jest ograniczona do przepustowości jednego węzła. | Wymaga obsługi protokołu BGP w infrastrukturze sieci. |
Inżynieria ruchu | Ograniczona kontrola nad routingiem ruchu. | Szczegółowa kontrola nad routingiem ruchu przy użyciu atrybutów protokołu BGP. |
Łączność zewnętrzna | Wymaga większej konfiguracji łączności zewnętrznej. | Zapewnia bezproblemową łączność z sieciami zewnętrznymi przy użyciu routingu BGP. |
Często zadawane pytania
Czy wystąpienie usługi MetalLB może być ponownie używane w klastrach usługi AKS Arc?
Nie, nie można ponownie użyć usługi MetalLB w klastrach usługi AKS Arc. Usługa MetalLB znajduje się jako zasobniki w klastrze Kubernetes, a moduły równoważenia obciążenia to zasoby niestandardowe (CRs). Należy zainstalować rozszerzenie k8s-usługi MetalLB Arc przy użyciu interfejsu wiersza polecenia platformy Azure, witryny Azure Portal lub szablonów usługi Azure Resource Manager oraz utworzyć moduły równoważenia obciążenia dla każdego klastra usługi AKS Arc.