Von dem, was ich verstehe,
Metallb ist ein Lastenausgleich, der einem Dienst eine IP-Adresse zuweist, die der Außenwelt zugänglich gemacht werden kann.
Nginx Ingress ist wie normales Nginx, befindet sich aber in Kubernetes und bietet Routing für verschiedene Routen.
Meine Frage ist, warum ich Metallb brauche, wenn ich Nginx Ingress habe? Weil Nginx Ingress Port 80/443 öffentlich macht und ich diesen einfach zum Weiterleiten an die Dienste verwenden kann, die ich brauche.
Danke schön.
Antwort1
Sie benötigen beides, da sie unterschiedliche Probleme lösen:
MetalLB empfängt Anfragen von außerhalb des Clusters und verteilt sie auf die Load Balancer im Cluster.
Nginx empfängt Anfragen von außerhalb des Clusters und verteilt sie auf die Knoten.
Sehenhttps://kubernetes.github.io/ingress-nginx/deploy/baremetal/#a-pure-software-solution-metallbfür Details.
Ohne MetalLB bleibt der Nginx-Ingress-Dienst in Bare Metal in pending
diesem Zustand, da ihm keine IP zugewiesen ist. MetalLB übernimmt die Aufgabe, Nginx eine externe IP zuzuweisen.
Ohne Nginx müssen Sie auf jedem Client eine TLS-Terminierung durchführen, was im Allgemeinen nicht ratsam ist.
Eine andere Sichtweise:
- nginx ingress verarbeitet den Typ
Ingress
- metallb behandelt den Typ
LoadBalancer
Die Verwirrung rührt wahrscheinlich daher, dass die oben beschriebenen Vorgänge zwar grundsätzlich unterschiedlich sind, aber dennoch häufig von einem „Load Balancer“ ausgeführt werden.
Beachten Sie, dass das Gleiche auch in der Cloud gilt: Sie müssen einen Ingress bereitstellen, um die TLS-Terminierung und andere Vorgänge zu handhaben, und der Anbieter erstellt automatisch einen Load Balancer auf seiner Infrastruktur.