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.
Erstellung einer IngressClass zur Konfiguration eines Application Load Balancers
EKS Auto Mode automatisiert Routineaufgaben für den Lastausgleich, einschließlich der Bereitstellung von Cluster-Anwendungen im Internet
AWS empfiehlt die Verwendung von Application Load Balancers (ALB) für den HTTP- und HTTPS-Datenverkehr. Application Load Balancers können Anfragen basierend auf dem Inhalt der Anfrage weiterleiten. Weitere Informationen über Application Load Balancer finden Sie unter Was ist elastischer Lastenausgleich?.
EKS Auto Mode erstellt und konfiguriert Application Load Balancer (ALBs). Beispielsweise erstellt EKS Auto Mode einen Load Balancer, wenn Sie ein Ingress-Kubernetes-Objekt erstellen, und konfiguriert ihn so, dass der Datenverkehr an Ihre Cluster-Workload weitergeleitet wird.
Übersicht
-
Erstellen Sie eine Workload, die Sie im Internet verfügbar machen möchten.
-
Erstellen Sie eine
IngressClassParams-Ressource und geben Sie AWS-spezifische Konfigurationswerte an, wie beispielsweise das für SSL/TLS zu verwendende Zertifikat und VPC-Subnetze. -
Erstellen Sie eine
IngressClass-Ressource und legen Sie fest, dass EKS Auto Mode als Controller für die Ressource dienen soll. -
Erstellen Sie eine
Ingress-Ressource, die einen HTTP-Pfad und einen Port mit einer Cluster-Workload verknüpft.
EKS Auto Mode erstellt einen Application Load Balancer, der auf die in der Ingress-Ressource angegebene Workload verweist und die in der IngressClassParams-Ressource angegebene Load-Balancer-Konfiguration verwendet.
Voraussetzungen
-
EKS Auto Mode in einem Amazon-EKS-Cluster aktiviert
-
Kubectl für die Verbindung mit Ihrem Cluster konfiguriert
-
Sie können
kubectl apply -f <filename>verwenden um die unten aufgeführten YAML-Beispiel-Konfigurationsdateien in Ihren Cluster anwenden.
-
Anmerkung
EKS Auto Mode erfordert Subnetz-Tags zur Identifizierung öffentlicher und privater Subnetze.
Wenn Sie Ihren Cluster mit eksctl erstellt haben, verfügen Sie bereits über diese Tags.
Weitere Informationen erhalten Sie unter Kennzeichnung von Subnetzen für EKS Auto Mode.
Schritt 1: Workload erstellen
Erstellen Sie zunächst eine Workload, die Sie im Internet verfügbar machen möchten. Dies kann jede Kubernetes-Ressource sein, die HTTP-Datenverkehr bereitstellt, z. B. eine Bereitstellung oder ein Service.
In diesem Beispiel wird ein einfacher HTTP-Service mit dem Namen service-2048 verwendet, der auf Port 80 empfangsbereit ist. Erstellen Sie diesen Service und dessen Bereitstellung, indem Sie das folgende Manifest 2048-deployment-service.yaml anwenden:
--- apiVersion: apps/v1 kind: Deployment metadata: name: deployment-2048 spec: selector: matchLabels: app.kubernetes.io/name: app-2048 replicas: 2 template: metadata: labels: app.kubernetes.io/name: app-2048 spec: containers: - image: public.ecr.aws/l6m2t8p7/docker-2048:latest imagePullPolicy: Always name: app-2048 ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: service-2048 spec: ports: - port: 80 targetPort: 80 protocol: TCP type: NodePort selector: app.kubernetes.io/name: app-2048
Wenden Sie die Konfiguration auf Ihren Cluster an:
kubectl apply -f 2048-deployment-service.yaml
Die oben aufgeführten Ressourcen werden im Standard-Namespace erstellt. Sie können dies durch Ausführung des folgenden Befehls überprüfen:
kubectl get all -n default
Schritt 2: IngressClassParams erstellen
Erstellen Sie ein IngressClassParams-Objekt, um AWS-spezifische Konfigurationsoptionen für den Application Load Balancer anzugeben. In diesem Beispiel erstellen wir eine IngressClassParams-Ressource mit dem Namen alb (die Sie im nächsten Schritt verwenden werden), die das Load-Balancer-Schema als internet-facing in einer Datei mit dem Namen alb-ingressclassparams.yaml festlegt.
apiVersion: eks.amazonaws.com/v1 kind: IngressClassParams metadata: name: alb spec: scheme: internet-facing
Wenden Sie die Konfiguration auf Ihren Cluster an:
kubectl apply -f alb-ingressclassparams.yaml
Schritt 3: IngressClass erstellen
Erstellen Sie ein IngressClass, das auf die in der IngressClassParams-Ressource festgelegten AWS-spezifischen Konfigurationseinstellungen in einer Datei mit dem Namen alb-ingressclass.yaml verweist. Notieren Sie den Namen des IngressClass. In diesem Beispiel haben sowohl IngressClass als auch IngressClassParams den Namen alb.
Verwenden Sie die is-default-class-Annotation, um zu steuern, ob Ingress-Ressourcen diese Klasse standardmäßig verwenden sollen.
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb annotations: # Use this annotation to set an IngressClass as Default # If an Ingress doesn't specify a class, it will use the Default ingressclass.kubernetes.io/is-default-class: "true" spec: # Configures the IngressClass to use EKS Auto Mode controller: eks.amazonaws.com/alb parameters: apiGroup: eks.amazonaws.com kind: IngressClassParams # Use the name of the IngressClassParams set in the previous step name: alb
Weitere Informationen zu den Konfigurationsoptionen finden Sie unter IngressClassParams-Referenz.
Wenden Sie die Konfiguration auf Ihren Cluster an:
kubectl apply -f alb-ingressclass.yaml
Schritt 4: Ingress erstellen
Erstellen Sie eine Ingress-Ressource in einer Datei mit dem Namen alb-ingress.yaml. Der Zweck dieser Ressource besteht darin, Pfade und Ports dem Application Load Balancer mit Workloads in Ihrem Cluster zuzuordnen. Für dieses Beispiel erstellen wir eine Ingress-Ressource mit dem Namen 2048-ingress, die den Datenverkehr an einen Service mit dem Namen service-2048 auf Port 80 weiterleitet.
Weitere Informationen zum Konfigurieren dieser Ressource finden Sie unter Ingress
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: 2048-ingress spec: # this matches the name of IngressClass. # this can be omitted if you have a default ingressClass in cluster: the one with ingressclass.kubernetes.io/is-default-class: "true" annotation ingressClassName: alb rules: - http: paths: - path: /* pathType: ImplementationSpecific backend: service: name: service-2048 port: number: 80
Wenden Sie die Konfiguration auf Ihren Cluster an:
kubectl apply -f alb-ingress.yaml
Schritt 4: Status überprüfen
Verwenden Sie kubectl, um den Status von Ingress zu ermitteln. Es kann einige Minuten dauern, bis der Load Balancer verfügbar ist.
Verwenden Sie den Namen der Ingress-Ressource, die Sie im vorherigen Schritt festgelegt haben. Zum Beispiel:
kubectl get ingress 2048-ingress
Sobald die Ressource bereit ist, rufen Sie den Domain-Namen des Load Balancers ab.
kubectl get ingress 2048-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
Um den Service in einem Webbrowser anzuzeigen, überprüfen Sie den Port und den Pfad, die in der Ingress-Rettungsdatei angegeben sind.
Schritt 6: Bereinigen
Zur Bereinigung des Load Balancer verwenden Sie den folgenden Befehl:
kubectl delete ingress 2048-ingress kubectl delete ingressclass alb kubectl delete ingressclassparams alb
EKS Auto Mode löscht automatisch den zugehörigen Load Balancer in Ihrem AWS-Konto.
IngressClassParams-Referenz
Die folgende Tabelle dient als Kurzübersicht über häufig verwendete Konfigurationsoptionen.
| Feld | Beschreibung | Beispielwert |
|---|---|---|
|
|
Legt fest, ob der ALB intern oder mit dem Internet verbunden ist |
|
|
|
Schränkt ein, welche Namespaces diese IngressClass verwenden können |
|
|
|
Gruppiert mehrere Ingresses, um einen einzigen ALB gemeinsam zu nutzen |
|
|
|
Legt den IP-Adresstyp für den ALB fest |
|
|
|
Liste der Subnetz-IDs für die ALB-Bereitstellung |
|
|
|
Tag-Filter zur Auswahl von Subnetzen für ALB |
|
|
|
ARNs der zu verwendenden SSL-Zertifikate |
|
|
|
Benutzerdefinierte Tags für AWS-Ressourcen |
|
|
|
Load-Balancer-spezifische Attribute |
|
Überlegungen
-
Sie können keine Annotationen in einer IngressClass verwenden, um Load Balancer in EKS Auto Mode zu konfigurieren.
-
Es ist nicht möglich, ListenerAttribute in EKS Auto Mode festzulegen.
-
Aktualisieren Sie die Cluster-IAM-Rolle, um die Übertragung von Tags von Kubernetes zu Ressourcen des AWS Load Balancer zu aktivieren. Weitere Informationen finden Sie unter Benutzerdefinierte AWS-Tags für EKS-Automatik-Ressourcen.
-
Informationen zum Zuordnen von Ressourcen zu EKS Auto Mode oder zum selbstverwalteten AWS Load Balancer Controller finden Sie unter Migrationsreferenz.
-
Informationen zum Beheben von Problemen mit Load Balancern finden Sie unter Fehlerbehebung mit EKS Auto Mode.
-
Weitere Überlegungen zur Verwendung der Load-Balancing-Funktion von EKS Auto Mode finden Sie unter Load Balancing.
Die folgenden Tabellen enthalten einen detaillierten Vergleich der Änderungen in den Konfigurationen von IngressClassParams, Ingress-Annotationen und TargetGroupBinding für EKS Auto Mode. Diese Tabellen zeigen die wichtigsten Unterschiede zwischen der Lastenausgleichsfunktion von EKS Auto Mode und dem Open-Source Load Balancer Controller auf, darunter Änderungen der API-Version, veraltete Features und aktualisierte Parameternamen.
IngressClassParams
| Vorherige | Neu | Beschreibung |
|---|---|---|
|
|
|
Änderung der API-Version |
|
|
|
Support für mehrere Zertifikats-ARNs |
|
|
|
Geändertes Schema für die Subnetz-Zuordnung |
|
|
Nicht unterstützt |
Wird von EKS Auto Mode noch nicht unterstützt |
Ingress-Annotationen
| Vorherige | Neu | Beschreibung |
|---|---|---|
|
|
Nicht unterstützt |
|
|
|
Nicht unterstützt |
Gruppen nur in IngressClass angeben |
|
|
Nicht unterstützt |
Stattdessen WAF v2 verwenden |
|
|
Nicht unterstützt |
Stattdessen WAF v2 verwenden |
|
|
Nicht unterstützt |
Shield-Integration deaktiviert |
|
|
Nicht unterstützt |
OIDC-Authentifizierungstyp wird derzeit nicht unterstützt |
TargetGroupBinding
| Vorherige | Neu | Beschreibung |
|---|---|---|
|
|
|
Änderung der API-Version |
|
|
|
Explizite Angabe des Zieltyps |
|
|
Nicht unterstützt |
NLB ohne Sicherheitsgruppen wird nicht mehr unterstützt |