

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# `AWSSupport-TroubleshootEKSALBControllerIssues`
<a name="automation-awssupport-troubleshoot-eks-alb-controller-issues"></a>

 **Beschreibung** 

 Das `AWSSupport-TroubleshootEKSALBControllerIssues` Automatisierungs-Runbook hilft bei der Diagnose häufiger Probleme, die verhindern, dass der Load AWS Balancer Controller den Application Load Balancer (ALB) und den Network Load Balancer (NLB) für Kubernetes-Eingänge und -Services ordnungsgemäß bereitstellt und verwaltet. 

 Dieses Runbook führt eine umfassende Validierung wichtiger Komponenten durch, einschließlich der Einrichtung des OIDC-Identitätsanbieters, der IRSA-Konfiguration, der Netzwerkvoraussetzungen, der Konfiguration und der Ressourcenkontingente. ingress/service Es erfasst auch Controller-Logs und relevante Kubernetes-Ressourcenkonfigurationen, um Fehlkonfigurationen oder Betriebsprobleme zu identifizieren. 

**Wichtig**  
Dieses Automatisierungs-Runbook wurde für Amazon EKS-Cluster entwickelt, die Amazon Elastic Compute Cloud (Amazon EC2) -Knotengruppen verwenden, und unterstützt derzeit keine Cluster, auf denen ausgeführt wird. AWS Fargate

 **Wie funktioniert es? ** 

 Das Runbook `AWSSupport-TroubleshootEKSALBControllerIssues` führt die folgenden allgemeinen Schritte aus: 
+ Überprüft den Amazon EKS-Clusterstatus, die Zugriffskonfiguration und die Einrichtung des OIDC-Providers.
+ Erstellt einen temporären Lambda-Proxy für die Kubernetes-API-Kommunikation.
+ Überprüft die Bereitstellung AWS des Load Balancer Controllers und die Konfiguration des Dienstkontos.
+ Überprüft die Pod-Identität, den Webhook und die IAM-Rolleninjektion.
+ Überprüft die Subnetzkonfiguration und das Tagging für die Bereitstellung von Application Load Balancer und Network Load Balancer.
+ Überprüft die Kontokontingente für Application Load Balancer und Network Load Balancer anhand der aktuellen Nutzung.
+ Validiert Anmerkungen zu Eingangs- und Serviceressourcen.
+ Überprüft das Tagging von Sicherheitsgruppen im Worker Node auf die Load Balancer-Integration.
+ Sammelt Controller-Pod-Protokolle zur Diagnose.
+ Bereinigt temporäre Authentifizierungsressourcen.
+ Generiert einen Diagnosebericht mit Ergebnissen und Abhilfemaßnahmen.

**Anmerkung**  
Für den Amazon EKS-Cluster muss ein Zugriffseintrag für die IAM-Entität konfiguriert sein, die diese Automatisierung ausführt. Der Authentifizierungsmodus des Clusters muss auf entweder `API` oder `API_AND_CONFIG_MAP` eingestellt sein. Ohne eine korrekte Konfiguration der Zugangseingabe wird die Automatisierung bei der ersten Validierung beendet.
Der `LambdaRoleArn` Parameter ist erforderlich und muss mit den AWS verwalteten Richtlinien verknüpft `AWSLambdaBasicExecutionRole` sein, damit die Proxyfunktion mit der Kubernetes-API kommunizieren kann. `AWSLambdaVPCAccessExecutionRole`
Der AWS Load Balancer Controller muss eine Version `v2.1.1` oder höher haben.
Die Automatisierung umfasst einen Bereinigungsschritt, bei dem temporäre Infrastrukturressourcen für die Authentifizierung entfernt werden. Dieser Bereinigungsschritt wird auch dann ausgeführt, wenn die vorherigen Schritte fehlschlagen. So wird sichergestellt, dass keine verwaisten Ressourcen in Ihrem Konto verbleiben. AWS 

 [Führen Sie diese Automatisierung aus (Konsole) ](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootEKSALBControllerIssues) 

**Art des Dokuments **

Automatisierung

**Eigentümer**

Amazon

**Plattformen**

/

**Erforderliche IAM-Berechtigungen **

Der `AutomationAssumeRole` Parameter erfordert die folgenden Aktionen, um das Runbook erfolgreich zu verwenden.
+ `cloudformation:CreateStack`
+ `cloudformation:DeleteStack`
+ `cloudformation:DescribeStacks`
+ `cloudformation:UpdateStack`
+ `ec2:CreateNetworkInterface`
+ `ec2:DeleteNetworkInterface`
+ `ec2:DescribeInstances`
+ `ec2:DescribeNetworkInterfaces`
+ `ec2:DescribeRouteTables`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeVpcs`
+ `eks:DescribeCluster`
+ `eks:ListAssociatedAccessPolicies`
+ `elasticloadbalancing:DescribeAccountLimits`
+ `elasticloadbalancing:DescribeLoadBalancers`
+ `iam:GetRole`
+ `iam:ListOpenIDConnectProviders`
+ `iam:PassRole`
+ `lambda:CreateFunction`
+ `lambda:DeleteFunction`
+ `lambda:GetFunction`
+ `lambda:InvokeFunction`
+ `lambda:ListTags`
+ `lambda:TagResource`
+ `lambda:UntagResource`
+ `lambda:UpdateFunctionCode`
+ `logs:CreateLogGroup`
+ `logs:CreateLogStream`
+ `logs:DescribeLogGroups`
+ `logs:DescribeLogStreams`
+ `logs:ListTagsForResource`
+ `logs:PutLogEvents`
+ `logs:PutRetentionPolicy`
+ `logs:TagResource`
+ `logs:UntagResource`
+ `ssm:DescribeAutomationExecutions`
+ `ssm:GetAutomationExecution`
+ `ssm:StartAutomationExecution`
+ `tag:GetResources`
+ `tag:TagResources`

 **Anweisungen** 

Folgen Sie diesen Schritten, um die Automatisierung zu konfigurieren und auszuführen:

**Anmerkung**  
Bevor Sie die Automatisierung ausführen, folgen Sie diesen Schritten, um die erforderlichen IAM-Rollen zu konfigurieren: eine für Systems Manager Automation, um das Runbook auszuführen, und eine weitere, für Lambda, um mit der Kubernetes-API zu kommunizieren:  
Erstellen Sie eine SSM-Automatisierungsrolle in Ihrem Konto. `TroubleshootEKSALBController-SSM-Role` Überprüfen Sie, dass die Vertrauensstellung die folgende Richtlinie enthält.  

   ```
   {
               "Version": "2012-10-17",		 	 	 
               "Statement": [
                   {
                       "Sid": "",
                       "Effect": "Allow",
                       "Principal": {
                           "Service": "ssm.amazonaws.com"
                       },
                       "Action": "sts:AssumeRole"
                   }
               ]
           }
   ```
Hängen Sie die folgende IAM-Richtlinie an, um die erforderlichen Berechtigungen zu gewähren:  

   ```
   {
               "Version": "2012-10-17",		 	 	 
               "Statement": [{
                   "Sid": "TroubleshootEKSALBControllerIssuesActions",
                   "Effect": "Allow",
                   "Action": [
                       "eks:DescribeCluster",
                       "eks:ListAssociatedAccessPolicies",
                       "iam:GetRole",
                       "iam:ListOpenIDConnectProviders",
                       "ssm:StartAutomationExecution",
                       "ssm:GetAutomationExecution",
                       "ssm:DescribeAutomationExecutions",
                       "ec2:DescribeSubnets",
                       "ec2:DescribeRouteTables",
                       "elasticloadbalancing:DescribeLoadBalancers",
                       "elasticloadbalancing:DescribeAccountLimits",
                       "ec2:DescribeInstances",
                       "ec2:DescribeNetworkInterfaces",
                       "ec2:DescribeSecurityGroups"
                   ],
                   "Resource": "*"
               },
               {
                   "Sid": "SetupK8sApiProxyForEKSActions",
                   "Effect": "Allow",
                   "Action": [
                       "cloudformation:CreateStack",
                       "cloudformation:DeleteStack",
                       "cloudformation:DescribeStacks",
                       "cloudformation:UpdateStack",
                       "ec2:CreateNetworkInterface",
                       "ec2:DeleteNetworkInterface",
                       "ec2:DescribeNetworkInterfaces",
                       "ec2:DescribeRouteTables",
                       "ec2:DescribeSecurityGroups",
                       "ec2:DescribeSubnets",
                       "ec2:DescribeVpcs",
                       "eks:DescribeCluster",
                       "iam:GetRole",
                       "lambda:CreateFunction",
                       "lambda:DeleteFunction",
                       "lambda:GetFunction",
                       "lambda:InvokeFunction",
                       "lambda:ListTags",
                       "lambda:TagResource",
                       "lambda:UntagResource",
                       "lambda:UpdateFunctionCode",
                       "logs:CreateLogGroup",
                       "logs:CreateLogStream",
                       "logs:DescribeLogGroups",
                       "logs:DescribeLogStreams",
                       "logs:ListTagsForResource",
                       "logs:PutLogEvents",
                       "logs:PutRetentionPolicy",
                       "logs:TagResource",
                       "logs:UntagResource",
                       "ssm:DescribeAutomationExecutions",
                       "tag:GetResources",
                       "tag:TagResources"
                   ],
                   "Resource": "*"
               },
               {
                   "Sid": "PassRoleToAutomation",
                   "Effect": "Allow",
                   "Action": "iam:PassRole",
                   "Resource": "*",
                   "Condition": {
                       "StringLikeIfExists": {
                           "iam:PassedToService": [
                               "lambda.amazonaws.com",
                               "ssm.amazonaws.com"
                           ]
                       }
                   }
               }]
           }
   ```
Konfigurieren Sie den Zugriffseintrag für Ihren Amazon EKS-Cluster. Dies ist eine zwingende Voraussetzung für die Automatisierung. Schritte zum Konfigurieren des Authentifizierungsmodus für Zugriffseinträge finden Sie unter Zugriffseinträge [ einrichten](https://docs.aws.amazon.com/eks/latest/userguide/setting-up-access-entries.html).  
Navigieren Sie in der Amazon EKS-Konsole zu Ihrem Cluster und folgen Sie diesen Schritten:  
Vergewissern Sie sich, dass Ihre Authentifizierungskonfiguration im ** Abschnitt ** Zugriff auf entweder `API` oder festgelegt ist`API_AND_CONFIG_MAP`.
Wählen Sie Zugangseintrag ** erstellen ** und konfigurieren Sie:  
Wählen Sie für den * IAM-Prinzipal-ARN die IAM-Rolle aus*, die Sie erstellt haben ()`TroubleshootEKSALBController-SSM-Role`.
Wählen Sie als *Typ* die Option aus `Standard`.
Fügen Sie eine Zugriffsrichtlinie hinzu:  
Wählen Sie als * Richtlinienname * die Option aus`AmazonEKSAdminViewPolicy`.
Wählen Sie für * Zugriffsumfang * die Option aus`Cluster`.
Wählen Sie **Richtlinie hinzufügen** aus.
Überprüfen Sie die Angaben und wählen Sie ** Erstellen aus**.
Erstellen Sie eine IAM-Rolle für die Lambda-Funktion (auf die wie `LambdaRoleArn` in den Eingabeparametern verwiesen wird):  
Erstellen Sie eine neue IAM-Rolle mit der folgenden Vertrauensrichtlinie:  

     ```
     {
                 "Version": "2012-10-17",		 	 	 
                 "Statement": [
                     {
                         "Effect": "Allow",
                         "Principal": {
                             "Service": "lambda.amazonaws.com"
                         },
                         "Action": "sts:AssumeRole"
                     }
                 ]
             }
     ```
Hängen Sie die folgenden AWS verwalteten Richtlinien an diese Rolle an:  
`AWSLambdaBasicExecutionRole`
`AWSLambdaVPCAccessExecutionRole`
Notieren Sie sich den ARN dieser Rolle, da Sie ihn für den `LambdaRoleArn` Eingabeparameter benötigen.

1. Navigieren Sie [ AWSSupport-TroubleshootEKSALBControllerIssues ](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootEKSALBControllerIssues/description) in der AWS Systems Manager-Konsole zu.

1. Wählen Sie **Automatisierung ausführen**.

1. Geben Sie für die Eingabeparameter Folgendes ein:
   + **AutomationAssumeRole (Fakultativ): **

     Geben Sie Folgendes ein: AWS: :IAM: :Role: :Arn

     Beschreibung: (Optional) Der Amazon-Ressourcenname (ARN) der AWS Identity and Access Management (IAM) -Rolle, die es Systems Manager Automation ermöglicht, Aktionen in Ihrem Namen auszuführen. Wenn keine Rolle angegeben ist, verwendet Systems Manager Automation die Berechtigungen des Benutzers, der dieses Runbook startet.

     Zulässiges Muster: ^arn :(? :aws\|aws-cn\|aws-us-gov) :iam::\\ d {12} :role/? [a-z \_0-9\+=, .@A-Z\\ -\_/] \+$
   + **EksClusterName (Erforderlich): **

     Typ: Zeichenfolge

     Beschreibung: (Erforderlich) Name des Amazon Elastic Kubernetes Service (Amazon EKS) -Clusters.

     Zulässiges Muster: ^ [0-9A-Za-z] [A-Za-z0-9-\_] {0,99} $
   + **ALBControllerDeploymentName (Fakultativ): **

     Typ: Zeichenfolge

     Beschreibung: (Optional) Der Name der Load AWS Balancer Controller-Bereitstellung in Ihrem Amazon EKS-Cluster. Dies ist in der Regel „aws-load-Balancer-Controller“, sofern Sie ihn nicht während der Installation angepasst haben.

     Zulässiges Muster: ^ [a-z0-9] ([-.a-z0-9] {0,251} [a-z0-9])? $

     Standard: aws-load-balancer-controller
   + **ALBControllerNamespace (Fakultativ): **

     Typ: Zeichenfolge

     Beschreibung: (Optional) Der Kubernetes-Namespace, in dem der Load AWS Balancer Controller bereitgestellt wird. Standardmäßig ist dies „Kube-System“, aber es kann anders sein, wenn Sie den Controller in einem benutzerdefinierten Namespace installiert haben.

     Erlaubtes Muster: ^ [a-z0-9] ([-a-z0-9] {0,61} [a-z0-9])? $

     Standard: kube-system
   + **ServiceAccountName (Fakultativ): **

     Typ: Zeichenfolge

     Beschreibung: (Optional) Der Name des Kubernetes-Dienstkontos, das dem AWS Load Balancer Controller zugeordnet ist. Dies ist in der Regel „aws-load-balancer-controller“, sofern er nicht während der Installation angepasst wird.

     Erlaubtes Muster: ^ [a-z0-9] ([-.a-z0-9] {0,251} [a-z0-9])? $

     Standard: aws-load-balancer-controller
   + **ServiceAccountNamespace (Fakultativ): **

     Typ: Zeichenfolge

     Beschreibung: (Optional) Der Kubernetes-Namespace, in dem sich das Dienstkonto für den Load AWS Balancer Controller befindet. Dies ist normalerweise ein „Kube-System“, kann jedoch abweichen, wenn Sie einen benutzerdefinierten Namespace verwendet haben.

     Erlaubtes Muster: ^ [a-z0-9] ([-a-z0-9] {0,61} [a-z0-9])? $

     Standard: kube-system
   + **IngressName (Fakultativ): **

     Typ: Zeichenfolge

     Beschreibung: (Optional) Name der zu validierenden Ingress-Ressource (Application Load Balancer). Wenn nicht angegeben, wird die Ingress-Validierung übersprungen.

     Zulässiges Muster: ^$\|^ [a-z0-9] [a-z0-9.-] {0,251} [a-z0-9] $

     Standard: „“ (leere Zeichenfolge)
   + **IngressNamespace (Fakultativ): **

     Typ: Zeichenfolge

     Beschreibung: (Optional) Namespace der Ingress-Ressource. Erforderlich, wenn `IngressName` angegeben.

     Zulässiges Muster: ^$\|^ [a-z0-9] [a-z0-9-] {0,61} [a-z0-9] $

     Standard: „“ (leere Zeichenfolge)
   + **ServiceName (Fakultativ): **

     Typ: Zeichenfolge

     Beschreibung: (Optional) Name einer bestimmten Dienstressource zur Überprüfung der Anmerkungen zum Network Load Balancer (Network Load Balancer). Wenn nicht angegeben, wird die Validierung der Serviceressourcen übersprungen.

     Zulässiges Muster: ^$\|^ [a-z0-9] [a-z0-9.-] {0,251} [a-z0-9] $

     Standard: „“ (leere Zeichenfolge)
   + **ServiceNamespace (Fakultativ): **

     Typ: Zeichenfolge

     Beschreibung: (Optional) Namespace der Service-Ressource. Erforderlich, wenn `ServiceName` angegeben.

     Zulässiges Muster: ^$\|^ [a-z0-9] [a-z0-9-] {0,61} [a-z0-9] $

     Standard: „“ (leere Zeichenfolge)
   + **LambdaRoleArn (Erforderlich): **

     Geben Sie Folgendes ein: AWS: :IAM: :Role: :Arn

     Beschreibung: (Erforderlich) Der ARN der IAM-Rolle, der es der AWS Lambda (Lambda-) Funktion ermöglicht, auf die erforderlichen AWS Dienste und Ressourcen zuzugreifen. Ordnen Sie die AWS verwalteten Richtlinien: `AWSLambdaBasicExecutionRole` und Ihrer `AWSLambdaVPCAccessExecutionRole` IAM-Rolle zur Ausführung der Lambda-Funktion zu.

     Zulässiges Muster: ^arn :(? :aws\|aws-cn\|aws-us-gov) :iam::\\ d {12} :role/? [a-z \_0-9\+=, .@A-Z\\ -\_/] \+$

1. Wählen Sie **Ausführen**.

1. Die Automatisierung wird initiiert.

1. Das Dokument führt die folgenden Schritte aus:

   1. **ValidateAccessEntryAndOIDCProvider:**

      Validiert das Amazon EKS-Cluster-IAM-Setup, indem es die Zugriffsberechtigungen und die OIDC-Provider-Konfiguration überprüft.

   1. **SetupK8sAuthenticationClient:**

      Führen Sie das SAW-Dokument aus AWSSupport-SetupK8sApiProxyForEKS , um eine Lambda-Funktion zur Ausführung von Amazon EKS-API-Aufrufen auf dem Cluster einzurichten.

   1. **VerifyALBControllerAndIRSASetup:**

      Überprüft, ob der angegebene Service Account & Application Load Balancer-Controller in den jeweiligen Namespaces vorhanden ist. Überprüft auch die Richtlinie „Service Account Role Annotation & Trust“ des Application Load Balancer-Controllers.

   1. **VerifyPodIdentityWebhookAndEnv:**

      Überprüft, ob pod-identity-webhook ausgeführt wird. Überprüft auch, ob IRSA in die ENV-Variablen des Pods eingefügt wird.

   1. **ValidateSubnetRequirements:**

      Überprüfen Sie mindestens zwei Subnetze in zwei AZs mit 8 verfügbaren IP-Adressen. Für Load Balancer ist ein korrektes Subnetz-Tagging vorhanden. public/private 

   1. **CheckLoadBalancerLimitsAndUsage:**

      Vergleichen Sie das Kontolimit mit der Anzahl der Application Load Balancer und Network Load Balancer.

   1. **CheckIngressOrServiceAnnotations:**

      Überprüft die Ingress- und Service-Ressourcen auf korrekte Anmerkungen und Spezifikationen, um sicherzustellen, dass sie für die Verwendung von Application Load Balancer und Network Load Balancer ordnungsgemäß konfiguriert sind.

   1. **CheckWorkerNodeSecurityGroupTags:**

      Stellen Sie sicher, dass genau eine Sicherheitsgruppe, die an die Worker-Knoten angehängt ist, über das erforderliche Cluster-Tag verfügt.

   1. **CaptureALBControllerLogs:**

      Ruft die neuesten Diagnoseprotokolle von den Load AWS Balancer Controller-Pods ab, die im Amazon EKS-Cluster ausgeführt werden.

   1. **CleanupK8sAuthenticationClient:**

      Führt das SAW-Dokument '' mithilfe der Operation AWSSupport-SetupK8sApiProxyForEKS 'Cleanup' aus, um Ressourcen zu bereinigen, die im Rahmen der Automatisierung erstellt wurden.

   1. **GenerateReport:**

      Generiert den Automatisierungsbericht.

1. Nach Abschluss der Ausführung finden Sie im Abschnitt Ausgaben die detaillierten Ergebnisse der Ausführung:

   1. **Bericht: **

      Bietet eine umfassende Zusammenfassung aller durchgeführten Prüfungen, einschließlich des Status des Amazon EKS-Clusters, der Einrichtung des Application Load Balancer Controllers, der IRSA-Konfiguration, der Subnetzanforderungen, der Load Balancer-Grenzwerte, ingress/service Anmerkungen, Sicherheitsgruppen-Tags für Worker Nodes und der Application Load Balancer Controller-Protokolle. Es enthält auch alle identifizierten Probleme und empfohlene Abhilfemaßnahmen.

**Referenzen**

Systems Manager Automation
+ [Führen Sie diese Automatisierung aus (Konsole) ](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootEKSALBControllerIssues/description)
+ [Führen Sie eine Automatisierung aus ](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-working-executing.html)
+ [Automatisierung einrichten ](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-setup.html)
+ [Unterstützen Sie Automatisierungsworkflows ](https://aws.amazon.com/premiumsupport/technology/saw/)

Dokumentation zum AWS Load Balancer Controller
+ [AWS Load Balancer-Controller ](https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html)
+ [Zugriffseinträge einrichten ](https://docs.aws.amazon.com/eks/latest/userguide/setting-up-access-entries.html)