

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-TroubleshootEKSDNSFailure`
<a name="automation-awssupport-troubleshooteksdnsfailure"></a>

 **Beschreibung** 

Das `AWSSupport-TroubleshootEKSDNSFailure` Runbook hilft bei der Behebung von Problemen mit CoreDNS-Pods und der Konfiguration in Amazon Elastic Kubernetes Service (Amazon EKS), wenn Anwendungen oder Pods auf DNS-Auflösungsfehler stoßen. Das Runbook validiert die VPC-DNS-Einstellungen, überprüft die CoreDNS-Bereitstellung und überprüft die HPA-Konfiguration (Horizontal Pod Autoscaler) ConfigMap, sammelt CoreDNS-Protokolle und führt DNS-Auflösungsprüfungen auf Worker-Knoten durch. Optional kann im selben Subnetz wie der problematische Worker-Knoten eine Testinstanz von Amazon Elastic Compute Cloud erstellt werden, um DNS-Auflösungsprüfungen durchzuführen, ohne dass ein direkter Zugriff auf den Knoten erforderlich ist.

**Wichtig**  
Der Authentifizierungsmodus des Amazon EKS-Clusters muss auf `API` oder eingestellt sein`API_AND_CONFIG_MAP`. Dieses Runbook stellt eine AWS Lambda (Lambda-) Funktion als Proxy bereit, um authentifizierte Kubernetes-API-Aufrufe durchzuführen, und bereinigt am Ende der Ausführung alle erstellten Ressourcen.

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

**Art des Dokuments**

Automatisierung

**Eigentümer**

Amazon

**Plattformen**

LinuxmacOS, Windows

**Parameter**
+ AutomationAssumeRole

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

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

  Typ: Zeichenfolge

  Beschreibung: (Erforderlich) Der Name des Amazon EKS-Zielclusters.
+ DnsName

  Typ: Zeichenfolge

  Standard: amazon.com

  Beschreibung: (Optional) Das Stub-Domain-Suffix für den Domainnamen, den die Anwendung oder der Pod nicht auflösen kann.
+ ProblematicNodeInstanceId

  Geben Sie:: :Id AWS::EC2::Instance ein

  Beschreibung: (Optional) Die Instanz-ID des Worker-Knotens, auf dem die Anwendung ausgeführt wird, bei der DNS-Auflösungsfehler aufgetreten sind. Falls bereitgestellt, erstellt das Runbook eine Amazon EC2 EC2-Instance, die die Prüfung durchführt, im selben Subnetz, um DNS-Auflösungsprüfungen durchzuführen. Verwenden Sie diesen Parameter, wenn sich der Worker-Knoten nicht in einem öffentlichen Subnetz befindet oder wenn die Installation `bind-utils` auf dem Worker-Knoten nicht zulässig ist.
+ CoreDnsNamespace

  Typ: Zeichenfolge

  Standard: kube-system

  Beschreibung: (Optional) Der Kubernetes-Namespace für CoreDNS-Pods.
+ S3 BucketName

  Typ AWS::S3::Bucket: :Name

  Beschreibung: (Optional) Der Name des Amazon Simple Storage Service-Buckets, in den CoreDNS-Fehlerbehebungsprotokolle hochgeladen werden.
+ LambdaRoleArn

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

  Beschreibung: (Optional) Der ARN der IAM-Rolle für die Lambda-Proxyfunktion. Falls nicht angegeben, erstellt das Runbook eine Rolle `Automation-K8sProxy-Role-<ExecutionId>` mit dem Namen `AWSLambdaBasicExecutionRole` und `AWSLambdaVPCAccessExecutionRole` den verwalteten Richtlinien. Es wird empfohlen, eine eigene Rolle bereitzustellen.

**Erforderliche IAM-Berechtigungen**

Der `AutomationAssumeRole` Parameter erfordert die folgenden Aktionen, um das Runbook erfolgreich zu verwenden.
+ `eks:DescribeCluster`
+ `ec2:DescribeVpcs`
+ `ec2:DescribeInstances`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeSecurityGroups`
+ `cloudformation:CreateStack`
+ `cloudformation:DescribeStacks`
+ `cloudformation:DeleteStack`
+ `lambda:InvokeFunction`
+ `s3:GetBucketPublicAccessBlock`
+ `s3:GetBucketAcl`
+ `s3:PutObject`
+ `ssm:DescribeInstanceInformation`
+ `ssm:SendCommand`
+ `ssm:GetCommandInvocation`
+ `ssm:StartAutomationExecution`
+ `ssm:GetAutomationExecution`

 **Dokumentschritte** 

1. `AssertIfTargetClusterExists`— Überprüft, ob der in angegebene Amazon EKS-Cluster `EksClusterName` existiert und sich im `ACTIVE` Status befindet. Wenn der Cluster nicht gefunden wird oder nicht aktiv ist, springt das Runbook zu. `GenerateReport`

1. `UpdateEksClusterExists`— Legt die interne `eksClusterExists` Variable `true` für die Verwendung bei der Berichtsgenerierung auf fest.

1. `GetVpcDnsSettings`- Ruft die `enableDnsSupport` `enableDnsHostnames` Einstellungen für die Amazon Virtual Private Cloud ab, die mit dem Amazon EKS-Cluster verknüpft ist.

1. `BranchOnVpcDnsSettings`- Überprüft, ob beide VPC-DNS-Einstellungen aktiviert sind. Wenn einer der beiden deaktiviert ist, springt das Runbook zu. `GenerateReport` Andernfalls wird mit fortgefahren. `DeployK8sAuthApisResources`

1. `DeployK8sAuthApisResources`— Wird ausgeführt`AWSSupport-SetupK8sApiProxyForEKS`, um eine Lambda-Funktion als Proxy für authentifizierte Kubernetes-API-Aufrufe an den Amazon EKS-Cluster bereitzustellen.

1. `RetrieveCoreDNSDeployment`- Ruft Informationen über die CoreDNS-Bereitstellung ab, einschließlich Pod-Bereitschaft, Container-Status und Bereitschaft der Knoten, die CoreDNS-Pods hosten. Ruft auch die CoreDNS-Cluster-IP ab.

1. `RetrieveAndInspectCoreDNSConfigMap`- Ruft das CoreDNS ConfigMap aus dem Amazon EKS-Cluster ab und sucht nach Konfigurationsproblemen, einschließlich Stub-Domäneneinstellungen für die in angegebene Domain. `DnsName`

1. `ValidateHpaConfiguration`- Überprüft, ob ein Horizontal Pod Autoscaler (HPA) für die CoreDNS-Bereitstellung im angegebenen Namespace konfiguriert ist.

1. `CheckS3BucketPublicStatus`— Überprüft, ob der angegebene Amazon S3 S3-Bucket `S3BucketName` keinen öffentlichen oder anonymen Lese- oder Schreibzugriff zulässt.

1. `CollectLogToS3`- Sammelt CoreDNS-Pod-Logs und lädt sie in den angegebenen Amazon S3 S3-Bucket hoch.

1. `BranchOnProblematicNodeInstanceId`- Prüft, ob bereitgestellt `ProblematicNodeInstanceId` wird und ob CoreDNS-Hostknoten existieren. Wenn beide Bedingungen erfüllt sind, fährt fort mit. `VerifyThatProblematicNodeInstanceBelongsToCluster` Andernfalls verzweigt sich zu`BranchOnCoreDnsDeployment`.

1. `VerifyThatProblematicNodeInstanceBelongsToCluster`— Bestätigt, dass `ProblematicNodeInstanceId` es sich bei der angegebenen Instance um einen Worker-Knoten im Amazon EKS-Cluster handelt.

1. `UpdateProblematicNodeInstanceStanding`— Setzt die interne `problematicNodeInstanceStanding` Variable auf`true`.

1. `GetProblematicInstanceDetails`- Ruft die AMI-ID, den Instance-Typ, die Subnetz-ID und die Sicherheitsgruppen-IDs des problematischen Worker-Knotens ab, um sie bei der Erstellung der Amazon EC2 EC2-Instance zu verwenden, die die Sondierung durchführt.

1. `CreateProbingInfrastructure`- Erstellt ein Instance-Profil und untersucht die Amazon EC2 EC2-Instance über einen AWS CloudFormation Stack im selben Subnetz wie der problematische Worker-Knoten. Der Stack ist benannt. `AWSSupport-TroubleshootEKSDNSFailure-<ExecutionId>`

1. `GetProbingInstanceId`- Ruft die Amazon EC2 EC2-Instance-ID, die die Sondierung durchführt, aus den CloudFormation Stack-Ausgaben ab.

1. `WaitForProbingInstanceSSMAgentStateToBeOnline`- Wartet darauf, dass der Amazon EC2 Systems Manager Agent auf der Amazon EC2-Instance, die die Prüfung durchführt, einen `Online` Status meldet, bevor er fortfährt.

1. `RetrieveCoreDNSPodsIPFromProblematicNode`- Ruft die CoreDNS-Pod-IP-Adressen ab, wie sie vom problematischen Worker-Knoten aus gesehen werden.

1. `PerformDNSResolutionOnProbing``EC2Instance`- Führt DNS-Auflösungsprüfungen auf der Amazon EC2 EC2-Instance, die die Sondierung durchführt, mithilfe der Cluster-IP und der CoreDNS-Pod-IP durch.

1. `DeleteCloudFormationStack`— Löscht den CloudFormation Stack, der die Amazon EC2 EC2-Instance und das Instance-Profil für die Sondierung erstellt hat.

1. `UpdateCfnStackDeleted`— Setzt die interne `cfnStackDeleted` Variable auf. `true`

1. `BranchOnCoreDnsDeployment`- Prüft, ob nicht angegeben `ProblematicNodeInstanceId` wurde und ob CoreDNS-Hostknoten existieren. Wenn beide Bedingungen erfüllt sind, fahren Sie mit fort. `PerformDNSResolutionOnCoreDnsWorkerNodes` Andernfalls geht es weiter zu`CleanupK8sAuthenticationInfrastructure`.

1. `BranchOnCoreDnsNodesExistForRunCommandSteps`- Prüft, ob CoreDNS-Hostknoten existieren, bevor die Schritte ausgeführt werden`aws:runCommand`. Wenn keine Knoten existieren (z. B. wenn CoreDNS keine Replikate hat), wird zu übersprungen. `CleanupK8sAuthenticationInfrastructure`

1. `PerformDNSResolutionOnCoreDnsWorkerNodes`- Führt DNS-Auflösungsprüfungen direkt auf den CoreDNS-Worker-Knoten mithilfe der Cluster-IP und der CoreDNS-Pod-IP durch.

1. `VerifyNameserverMatchAndKubeProxyLogsAndIPTableEntries`- Überprüft, ob die Nameserver-IP mit der Cluster-IP übereinstimmt, überprüft den Kube-Proxy-Pod-Zugriff auf den API-Server und validiert kube-dns iptables-Einträge auf den CoreDNS-Worker-Knoten.

1. `VerifyPPSThrottlingOnENIs`- Überprüft das DNS packets-per-second (PPS) -Limit pro Elastic Network Interface (ENI) auf den CoreDNS-Worker-Knoten, um mögliche Drosselungen zu erkennen.

1. `UpdateChecksOnNodes`— Setzt die interne `checksOnNodes` Variable auf, um anzuzeigen, dass `true` Prüfungen auf Knotenebene durchgeführt wurden.

1. `CleanupK8sAuthenticationInfrastructure`- Wird `AWSSupport-SetupK8sApiProxyForEKS` mit dem `Cleanup` Vorgang zum Entfernen der Lambda-Proxyfunktion und der zugehörigen Ressourcen ausgeführt, die während der Automatisierung erstellt wurden.

1. `UpdateK8sInfrastructreDeleted`— Setzt die interne `K8sInfrastructreDeleted` Variable auf. `true`

1. `CleanUpAllResources`- Führt eine umfassende Bereinigung aller verbleibenden Ressourcen durch, einschließlich des CloudFormation Stacks und der Lambda-Proxyfunktion, falls frühere Bereinigungsschritte nicht erfolgreich abgeschlossen wurden.

1. `CollectOutputFromAllRunCommandSteps`- Sammelt und konsolidiert die Ergebnisse aller `aws:runCommand` Schritte, die während der Automatisierung ausgeführt wurden.

1. `GenerateReport`- Fasst die Ergebnisse aller vorherigen Schritte in einem umfassenden Bewertungsbericht zusammen, der die VPC-DNS-Einstellungen, den Zustand der CoreDNS-Bereitstellung, die Konfiguration, die ConfigMap HPA-Konfiguration, den Status der Protokollerfassung und die Ergebnisse der DNS-Auflösungsprüfung umfasst.

 **Ausgaben** 

`GenerateReport.EvalReport`- Ein umfassender Bericht über alle durchgeführten DNS-Fehlerbehebungsprüfungen, einschließlich der Ergebnisse und empfohlenen Korrekturmaßnahmen.