Weiterleitung von Internet-Datenverkehr mit AWS Load Balancer Controller - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.

Weiterleitung von Internet-Datenverkehr mit AWS Load Balancer Controller

Der AWS Load Balancer Controller verwaltet AWS-Elastic-Load-Balancer für einen Kubernetes-Cluster. Mit dem Controller können Sie Ihre Cluster-Anwendungen im Internet verfügbar machen. Der Controller stellt AWS Load Balancer bereit, die auf Cluster-Service- oder Ingress-Ressourcen verweisen. Mit anderen Worten: Der Controller erstellt eine einzelne IP-Adresse oder einen DNS-Namen, der auf mehrere Pods in Ihrem Cluster verweist.

Architekturdiagramm. Darstellung des Datenverkehrs von Internetnutzern zu Amazon Load Balancer. Amazon Load Balancer verteilt den Datenverkehr auf die Pods im Cluster.

Der Controller überwacht Kubernetes-Ingress- oder Service-Ressourcen. Als Reaktion darauf erstellt er die entsprechenden AWS-Elastic-Load-Balancing-Ressourcen. Sie können das spezifische Verhalten der Load Balancer konfigurieren, indem Sie Annotationen zu den Kubernetes-Ressourcen hinzufügen. Beispielsweise können Sie mithilfe von Annotationen AWS-Sicherheitsgruppen an Load Balancer anfügen.

Der Controller stellt die folgenden Ressourcen bereit:

Kubernetes Ingress

Der LBC erstellt einen AWS Application Load Balancer (ALB), wenn Sie einen Kubernetes-Ingress erstellen. Überprüfen Sie die Annotationen, die Sie auf eine Ingress-Ressource anwenden können.

Kubernetes-Service vom Typ LoadBalancer

Der LBC erstellt einen AWS Network Load Balancer (NLB), wenn Sie einen Kubernetes-Service vom Typ LoadBalancer erstellen. Überprüfen Sie die Annotationen, die Sie auf eine Service-Ressource anwenden können.

In der Vergangenheit wurde der Kubernetes-Netzwerk-Load-Balancer für Instance-Ziele verwendet, während der LBC für IP-Ziele eingesetzt wurde. Mit Version 2.3.0 oder höher des AWS Load Balancer Controllers können Sie NLBs mit beiden Zieltypen erstellen. Weitere Informationen zu NLB-Zieltypen finden Sie unter Zieltyp im Benutzerhandbuch für Network Load Balancer.

Der Controller ist ein Open-Source-Projekt, das auf GitHub verwaltet wird.https://github.com/kubernetes-sigs/aws-load-balancer-controller

Bevor Sie den Controller bereitstellen, empfehlen wir Ihnen, die Voraussetzungen und Überlegungen in Weiterleiten von Anwendungen und HTTP-Datenverkehr mit Application Load Balancers und Weiterleitung von TCP- und UDP-Datenverkehr mit Network Load Balancers zu überprüfen. In diesen Themen stellen Sie eine Beispielanwendung bereit, die einen AWS Load Balancer enthält.

Installation des Controllers

Sie können eines der folgenden Verfahren verwenden, um den AWS Load Balancer Controller zu installieren:

  • Wenn Sie Amazon EKS zum ersten Mal verwenden, empfehlen wir Ihnen, Helm für die Installation zu verwenden, da dies die Installation des AWS Load Balancer Controllers vereinfacht. Weitere Informationen finden Sie unter AWS Load Balancer Controller mit Helm installieren.

  • Für erweiterte Konfigurationen, wie z. B. Cluster mit eingeschränktem Netzwerkzugriff auf öffentliche Container-Registries, verwenden Sie Kubernetes-Manifeste Weitere Informationen finden Sie unter AWS Load Balancer Controller mit Manifesten installieren.

Migration von veralteten Controller-Versionen

  • Wenn Sie veraltete Versionen des AWS Load Balancer Controllers installiert haben, lesen Sie Anwendungen vom veralteten ALB Ingress Controller migrieren.

  • Veraltete Versionen können nicht aktualisiert werden. Diese müssen entfernt und eine aktuelle Version des AWS Load Balancer Controllers installiert werden.

  • Zu den veralteten Versionen gehören:

    • AWS ALB Ingress Controller für Kubernetes („Ingress Controller“), ein Vorgänger des AWS Load Balancer Controller.

    • Jede 0.1.x -Version des AWS Load Balancer Controllers

Veraltete Cloud-Provider

Kubernetes beinhaltet einen veralteten Cloud-Provider für AWS. Der veraltete Cloud-Provider kann AWS Load Balancer bereitstellen, ähnlich dem AWS Load Balancer Controller. Der veraltete Cloud-Provider erstellt klassische Load Balancer. Wenn Sie den AWS Load Balancer Controller nicht installieren, verwendet Kubernetes standardmäßig den veralteten Cloud-Provider. Sie sollten den AWS Load Balancer Controller installieren und die Verwendung des veralteten Cloud-Providers vermeiden.

Wichtig

In den Versionen 2.5 und höher wird der AWS Load Balancer Controller zum Standard-Controller für Kubernetes-Service-Ressourcen mit dem type: LoadBalancer und erstellt für jeden Service einen AWS Network Load Balancer (NLB). Dies geschieht durch einen mutierenden Webhook für Services, der das Feld spec.loadBalancerClass auf service.k8s.aws/nlb für neue Services von type: LoadBalancer setzt. Sie können dieses Feature deaktivieren und wieder den veralteten Cloud Provider als Standard-Controller verwenden, indem Sie den Wert für den Helm-Chart enableServiceMutatorWebhook auf false setzen. Der Cluster stellt keine neuen Classic Load Balancer für Ihre Services bereit, es sei denn, Sie schalten dieses Feature aus. Bestehende Classic Load Balancer werden weiterhin funktionieren.