Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Wie verwende ich den AWS Load Balancer Controller, um einen Application Load Balancer auf einer Amazon EC2-Knotengruppe in Amazon EKS einzurichten?
Ich möchte den AWS Load Balancer Controller verwenden, um einen Application Load Balancer auf einer Amazon Elastic Compute Cloud (Amazon EC2)-Knotengruppe in Amazon Elastic Kubernetes Service (Amazon EKS) einzurichten.
Behebung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Voraussetzung: Konfiguriere deine Subnetze so, dass sie den ausgehenden Internetzugang von deinen Worker-Knoten aus ermöglichen. AWS Load Balancer Controller benötigt eine ausgehende Internetverbindung.
Informationen zur Bereitstellung von AWS Load Balancer Controller auf AWS Fargate findest du unter Wie richte ich den AWS Load Balancer Controller auf einem Amazon EKS-Cluster für Fargate ein?
Subnetze taggen
Markiere die Amazon Virtual Private Cloud (Amazon VPC)-Subnetze in deinem Amazon EKS-Cluster. Nachdem du deine Subnetze markiert hast, erkennt dein AWS Load Balancer Controller automatisch Subnetze, wenn du die Application Load Balancer-Ressource erstellst.
Für öffentliche Application Load Balancer benötigst du mindestens zwei öffentliche Subnetze in der VPC deines Clusters mit dem Tag kubernetes.io/role/elb.
Für private Application Load Balancer benötigst du mindestens zwei private Subnetze in der VPC deines Clusters mit dem Tag kubernetes.io/role/internal-elb.
OIDC-Identitätsanbieter erstellen
Verwende die Amazon EKS-Konsole, die AWSL CLI oder eksctl, um einen OIDC-Identitätsanbieter zu erstellen, der mit AWS Identity and Access Management (IAM)-Rollen für Servicekonten (IRSA) verwendet werden kann.
Amazon-EKS-Konsole
Informationen zur Verwendung der Konsole findest du unter Erstellen eines OIDC-Identitätsanbieters (AWS-Konsole).
AWSL CLI
Suche den Fingerabdruck der Stammzertifizierungsstelle (CA), die dein Cluster verwendet. Führe dann den folgenden Befehl create-open-id-connect-provider aus:
ISSUER_URL=$(aws eks describe-cluster --name cluster-name \ --query "cluster.identity.oidc.issuer" --region region-name --output text)aws iam create-open-id-connect-provider \ --url ${ISSUER_URL} \ --thumbprint-list ca-thumbprint \ --client-id-list sts.amazonaws.com \ --region region-name
Hinweis: Ersetze cluster-name durch den Namen deines Clusters, region-name durch deine AWS-Region und ca-thumbprint durch den Fingerabdruck deines von der Stammzertifizierungsstelle ausgestellten Zertifikats.
eksctl
Informationen zur Verwendung des Befehlszeilentools eksctl findest du unter Erstellen eines OIDC-Identitätsanbieters (eksctl).
Erstellen einer IAM-Richtlinie
Erstelle eine IAM-Richtlinie, die es dem AWS Load Balancer Controller ermöglicht, AWS-APIs aufzurufen.
Wichtig: Es ist eine bewährte Methode, IRSA zu verwenden, wenn du Zugriff auf AWS-APIs gewährst.
Führe die folgenden Schritte aus:
-
Führe je nach Region einen der folgenden Befehle aus, um eine IAM-Richtlinie für den AWS Load Balancer Controller von GitHub herunterzuladen.
Führe für alle Regionen außer Peking und Ningxia, China, den folgenden Befehl describe-cluster aus:ISSUER_URL= aws eks describe-cluster --name example-cluster-name \ --query "cluster.identity.oidc.issuer" --region example-region-name --output text aws iam create-open-id-connect-provider \ --url example-issuer-url \ --thumbprint-list ca-thumbprint \ --client-id-list sts.amazonaws.com \ --region example-region-nameHinweis: Ersetze example-cluster-name durch den Namen deines Clusters, example-region-name durch deine Region und example-issuer-url durch die URL deines Ausstellers.
Führe für die chinesischen Regionen Peking und Ningxia den folgenden Befehl curl aus:curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy_cn.json -
Führe den folgenden Befehl create-policy aus, um eine IAM-Richtlinie mit dem Namen AWSLoadBalancerControllerIAMPolicy für dein Worker-Knoten-Instance-Profil zu erstellen:
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam-policy.json -
Notiere dir den Amazon-Ressourcennamen (ARN) der Richtlinie, die der Befehl zurückgibt.
-
Verwende die vorhandene IAM-Rolle oder erstelle eine neue IAM-Rolle für den AWS Load Balancer Controller.
Hinweis: Um mit eksctl eine IAM-Rolle zu erstellen, verwende den Parameter --attach-policy-am mit dem ARN der IAM-Richtlinie AWSLoadBalancerControllerIAMPolicy. -
Führe den folgenden Befehl attach-role-policy aus, um AWSLoadBalancerControllerIAMPolicy an deine IAM-Rolle anzuhängen:
aws iam attach-role-policy \--policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \--role-name role-nameHinweis: Ersetzen Sie 111122223333 durch die AWS-Konto-ID und role-name durch den Namen Ihrer IAM-Rolle.
Bereitstellen des AWS Load Balancer Controllers
Führe die folgenden Schritte aus:
-
Stelle sicher, dass du über den erforderlichen Tag für den Load Balancer verfügst, der deinen Subnetzen zugeordnet ist.
-
Führe den folgenden Befehl mit Kubernetes 1.16 oder höher aus, um cert-manager zu installieren:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/example-version/cert-manager.yaml -
Führe in der Manifestdatei, die du von GitHub heruntergeladen hast, den folgenden Befehl aus:
curl -Lo ingress-controller.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/example-version/v2_13_3_full.yamlHinweis: Ersetze example-version durch die Version von AWS Load Balancer Controller, die du bereitstellen möchtest. Informationen zur Überprüfung der AWS Load Balancer Controller-Version findest du unter Kubernetes SIGs auf der GitHub-Website. Achte darauf, den Dateinamen so zu ändern, dass er deiner Version entspricht. Im vorherigen Codebeispiel entspricht v2_13_3_full.yaml dem AWS Load Balancer Controller v2.13.3. Weitere Informationen findest du unter aws-load-balancer-controller auf der GitHub-Website.
-
Nimm im Abschnitt ServiceAccount der .yaml-Datei die folgenden Aktualisierungen vor:
spec: containers: - args: - --cluster-name=example-cluster-name - --ingress-class=albHinweis: Ersetze example-cluster-name durch den Namen deines Clusters.
Im folgenden Beispiel ist 111122223333 die Konto-ID und example-role-name ist der IAM-Rollenname:apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/example-role-name name: aws-load-balancer-controller namespace: kube-system -
Führe den folgenden Befehl aus, um den AWS Load Balancer Controller bereitzustellen:
kubectl apply -f ingress-controller.yaml
Eine Beispielanwendung bereitstellen
Stelle eine Beispielanwendung bereit, um zu überprüfen, ob der AWS Load Balancer Controller aufgrund des eingehenden Objekts einen öffentlichen Application Load Balancer erstellt.
Führe die folgenden Schritte aus:
-
Führe den folgenden Befehl aus, um ein Spiel namens 2048 bereitzustellen:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/example-version/docs/examples/2048/2048_full.yamlHinweis: Ersetze example-version durch die Version des AWS Load Balancer Controllers, den du bereitstellen möchtest. Informationen zur Überprüfung deiner AWS Load Balancer Controller-Version findest du unter Kubernetes SIGs auf der GitHub-Website.
-
Führe nach einigen Minuten den folgenden Befehl aus, um zu überprüfen, ob Kubernetes die eingehende Ressource erstellt hat:
kubectl get ingress/ingress-2048 -n game-2048Beispielausgabe:
NAME CLASS HOSTS ADDRESS PORTS AGEingress-2048 <none> * k8s-game2048-ingress2-xxxxxxxxxx-yyyyyyyyyy.us-west-2.elb.amazonaws.com 80 2m32s -
Wenn Kubernetes deine eingehende Ressource nicht erstellt, führe den folgenden Befehl aus, um die AWS Load Balancer Controller-Protokolle auf Bereitstellungsfehlermeldungen zu überprüfen:
kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller -
Um das Spiel zu sehen, öffne einen Webbrowser und gib dann die URL-Adresse aus der Ausgabe in Schritt 2 ein.
-
Führe den folgenden Befehl aus, um das Spiel zu löschen:
kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/example-version/docs/examples/2048/2048_full.yamlHinweis: Ersetze example-version durch die Version des AWS Load Balancer Controllers, den du bereitstellen möchtest.
- Themen
- Containers
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor einem Jahr