Installieren des Add-ons AWS Load Balancer Controller
Der AWS-Lastenverteilungs-Controller verwaltet AWS-Elastic-Load-Balancer für einen Kubernetes-Cluster. Der Controller stellt die folgenden Ressourcen bereit.
-
Ein AWS Application Load Balancer (ALB) beim Erstellen eines Kubernetes-
Ingress
. -
Ein AWS Network Load Balancer (NLB), wenn Sie einen Kubernetes-Service vom Typ
LoadBalancer
erstellen. In der Vergangenheit wurde der Network Load Balancer von Kubernetes für Instance-Ziele verwendet, während der AWS Load Balancer Controller für IP-Ziele genutzt wurde. Mit der Version 2.3.0 oder höher des AWS Load Balancer Controllers können Sie NLBs für beide Zieltypen erstellen. Weitere Informationen zu NLB-Zieltypen finden Sie unter Zieltyp im Benutzerhandbuch für Netzwerklastenverteilung.
Der AWS Load Balancer Controller wurde früher als AWS ALB Ingress Controller bezeichnet. Es ist ein Open-Source-Projekt
Voraussetzungen
-
Ein vorhandener Amazon-EKS-Cluster. Informationen zum Bereitstellen finden Sie unter Erste Schritte mit Amazon EKS. Zur Verwendung der Version 2.4.0 des Controllers (der in diesem Thema genutzten Version) ist die Clusterversion 1.19 oder höher notwendig. Bei einer früheren Clusterversion als 1.19 empfehlen wir die Verwendung der Controller-Version 2.3.1.
-
Ein vorhandener Anbieter für AWS Identity and Access Management (IAM) OpenID Connect (OIDC) für Ihren Cluster. Informationen zum Feststellen, ob Sie bereits über einen verfügen oder einen erstellen müssen, finden Sie unter Erstellen Sie einen IAM-OIDC-Anbieter für Ihren Cluster.
So stellen Sie den AWS-Lastenverteilungs-Controller in einem Amazon-EKS-Cluster bereit
Ersetzen Sie in den folgenden Schritten das
durch Ihre eigenen Werte. Bei einer früheren Clusterversion als 1.19 ändern Sie alle Instances von example
values
2.4.0
in 2.3.1
und alle Instances von v2_4_0_full.yaml
in v2_3_1_full.yaml
.
-
Erstellen Sie eine IAM-Richtlinie.
-
Laden Sie eine IAM-Richtlinie für den AWS-Lastenverteilungs-Controller herunter, die es ihm ermöglicht, in Ihrem Namen Aufrufe an AWS-APIs zu tätigen. Sie können das Richtliniendokument
auf GitHub anzeigen. curl -o iam_policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.4.0/docs/install/iam_policy.json
-
Erstellen Sie eine IAM-Richtlinie mit der im vorherigen Schritt heruntergeladenen Richtlinie.
aws iam create-policy \ --policy-name
AWSLoadBalancerControllerIAMPolicy
\ --policy-document file://iam_policy.jsonAnmerkung Wenn Sie die Richtlinie in der AWS Management Console anzeigen, werden möglicherweise Warnungen für ELB angezeigt. Diese können sicher ignoriert werden, da einige der Aktionen nur für ELB v2 existieren. Sie sehen keine Warnungen für ELB v2.
-
-
Erstellen Sie eine IAM-Rolle und kommentieren Sie das Kubernetes-Dienstkonto mit dem Namen
aws-load-balancer-controller
imkube-system
-Namespace für den AWS-Lastenverteilungs-Controller miteksctl
oder AWS CLI undkubectl
. Wenn Sie derzeit den AWS ALB Ingress Controller für Kubernetes installiert haben, deinstallieren Sie ihn. Der AWS Load Balancer Controller ersetzt die Funktionalität des AWS ALB Ingress Controllers für Kubernetes.
-
Überprüfen Sie, ob der Controller derzeit installiert ist.
kubectl get deployment -n kube-system alb-ingress-controller
Dies ist die Ausgabe, falls der Controller nicht installiert ist. Wechseln Sie zum Schritt Controller installieren.
Error from server (NotFound): deployments.apps "alb-ingress-controller" not found
Dies ist die Ausgabe, falls der Controller installiert ist.
NAME READY UP-TO-DATE AVAILABLE AGE alb-ingress-controller 1/1 1 1 122d
-
Geben Sie die folgenden Befehle ein, um den Controller zu entfernen.
kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/alb-ingress-controller.yaml kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/rbac-role.yaml
-
Fügen Sie der in einem vorherigen Schritt erstellten IAM-Rolle die folgende IAM-Richtlinie hinzu. Die Richtlinie ermöglicht dem AWS-Lastenverteilungs-Controller den Zugriff auf die Ressourcen, die vom ALB Ingress Controller für Kubernetes erstellt wurden.
-
Laden Sie die IAM-Richtlinie herunter. Sie können auch die Richtlinie anzeigen
. curl -o iam_policy_v1_to_v2_additional.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.4.0/docs/install/iam_policy_v1_to_v2_additional.json
-
Erstellen Sie die IAM-Richtlinie und notieren Sie den zurückgegebenen ARN.
aws iam create-policy \ --policy-name
AWSLoadBalancerControllerAdditionalIAMPolicy
\ --policy-document file://iam_policy_v1_to_v2_additional.json -
Hängen Sie die IAM-Richtlinie an die IAM-Rolle an, die Sie in einem vorherigen Schritt erstellt haben. Ersetzen Sie
durch den Namen der Rolle. Wenn Sie die Rolle mityour-role-name
eksctl
erstellt haben, öffnen Sie zur Suche nach dem erstellten Rollennamen die AWS CloudFormation-Konsoleund wählen Sie den Stack eksctl- your-cluster-name
-addon-iamserviceaccount-kube-system-aws-load-balancer-controller aus. Wählen Sie die Registerkarte für Resources (Ressourcen). Der Rollenname befindet sich in der Spalte Physische ID. Wenn Sie das AWS Management Console zum Erstellen der Rolle verwendet haben, ist der Rollenname ein beliebiger Name, z. B.
.AmazonEKSLoadBalancerControllerRole
aws iam attach-role-policy \ --role-name
your-role name
\ --policy-arn arn:aws:iam::111122223333
:policy/AWSLoadBalancerControllerAdditionalIAMPolicy
-
-
-
Installieren Sie den AWS Load Balancer Controller mit Helm V3 oder höher oder durch Anwenden eines Kubernetes-Manifests. Wenn Sie den Controller in Fargate bereitstellen möchten, verwenden Sie das Helm-Verfahren, da er nicht von
cert-manager
abhängig ist. -
Stellen Sie sicher, dass der Controller installiert ist.
kubectl get deployment -n kube-system aws-load-balancer-controller
Ausgabe
NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-controller 2/2 2 2 84s
Sie erhalten die vorherige Ausgabe, wenn Sie mit Helm bereitgestellt haben. Wenn Sie mit dem Kubernetes-Manifest bereitgestellt haben, haben Sie nur ein Replikat.
-
Bevor Sie den Controller zum Bereitstellen von AWS-Ressourcen verwenden, muss Ihr Cluster bestimmte Anforderungen erfüllen. Weitere Informationen erhalten Sie unter Anwendungslastenverteilung auf Amazon EKS und Netzwerklastenausgleich auf Amazon EKS.