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
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 seinAPI_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)
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-utilsauf 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 NamenAWSLambdaBasicExecutionRoleundAWSLambdaVPCAccessExecutionRoleden 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
-
AssertIfTargetClusterExists— Überprüft, ob der in angegebene Amazon EKS-ClusterEksClusterNameexistiert und sich imACTIVEStatus befindet. Wenn der Cluster nicht gefunden wird oder nicht aktiv ist, springt das Runbook zu.GenerateReport -
UpdateEksClusterExists— Legt die interneeksClusterExistsVariabletruefür die Verwendung bei der Berichtsgenerierung auf fest. -
GetVpcDnsSettings- Ruft dieenableDnsSupportenableDnsHostnamesEinstellungen für die Amazon Virtual Private Cloud ab, die mit dem Amazon EKS-Cluster verknüpft ist. -
BranchOnVpcDnsSettings- Überprüft, ob beide VPC-DNS-Einstellungen aktiviert sind. Wenn einer der beiden deaktiviert ist, springt das Runbook zu.GenerateReportAndernfalls wird mit fortgefahren.DeployK8sAuthApisResources -
DeployK8sAuthApisResources— Wird ausgeführtAWSSupport-SetupK8sApiProxyForEKS, um eine Lambda-Funktion als Proxy für authentifizierte Kubernetes-API-Aufrufe an den Amazon EKS-Cluster bereitzustellen. -
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. -
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 -
ValidateHpaConfiguration- Überprüft, ob ein Horizontal Pod Autoscaler (HPA) für die CoreDNS-Bereitstellung im angegebenen Namespace konfiguriert ist. -
CheckS3BucketPublicStatus— Überprüft, ob der angegebene Amazon S3 S3-BucketS3BucketNamekeinen öffentlichen oder anonymen Lese- oder Schreibzugriff zulässt. -
CollectLogToS3- Sammelt CoreDNS-Pod-Logs und lädt sie in den angegebenen Amazon S3 S3-Bucket hoch. -
BranchOnProblematicNodeInstanceId- Prüft, ob bereitgestelltProblematicNodeInstanceIdwird und ob CoreDNS-Hostknoten existieren. Wenn beide Bedingungen erfüllt sind, fährt fort mit.VerifyThatProblematicNodeInstanceBelongsToClusterAndernfalls verzweigt sich zuBranchOnCoreDnsDeployment. -
VerifyThatProblematicNodeInstanceBelongsToCluster— Bestätigt, dassProblematicNodeInstanceIdes sich bei der angegebenen Instance um einen Worker-Knoten im Amazon EKS-Cluster handelt. -
UpdateProblematicNodeInstanceStanding— Setzt die interneproblematicNodeInstanceStandingVariable auftrue. -
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. -
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> -
GetProbingInstanceId- Ruft die Amazon EC2 EC2-Instance-ID, die die Sondierung durchführt, aus den CloudFormation Stack-Ausgaben ab. -
WaitForProbingInstanceSSMAgentStateToBeOnline- Wartet darauf, dass der Amazon EC2 Systems Manager Agent auf der Amazon EC2-Instance, die die Prüfung durchführt, einenOnlineStatus meldet, bevor er fortfährt. -
RetrieveCoreDNSPodsIPFromProblematicNode- Ruft die CoreDNS-Pod-IP-Adressen ab, wie sie vom problematischen Worker-Knoten aus gesehen werden. -
PerformDNSResolutionOnProbingEC2Instance- 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. -
DeleteCloudFormationStack— Löscht den CloudFormation Stack, der die Amazon EC2 EC2-Instance und das Instance-Profil für die Sondierung erstellt hat. -
UpdateCfnStackDeleted— Setzt die internecfnStackDeletedVariable auf.true -
BranchOnCoreDnsDeployment- Prüft, ob nicht angegebenProblematicNodeInstanceIdwurde und ob CoreDNS-Hostknoten existieren. Wenn beide Bedingungen erfüllt sind, fahren Sie mit fort.PerformDNSResolutionOnCoreDnsWorkerNodesAndernfalls geht es weiter zuCleanupK8sAuthenticationInfrastructure. -
BranchOnCoreDnsNodesExistForRunCommandSteps- Prüft, ob CoreDNS-Hostknoten existieren, bevor die Schritte ausgeführt werdenaws:runCommand. Wenn keine Knoten existieren (z. B. wenn CoreDNS keine Replikate hat), wird zu übersprungen.CleanupK8sAuthenticationInfrastructure -
PerformDNSResolutionOnCoreDnsWorkerNodes- Führt DNS-Auflösungsprüfungen direkt auf den CoreDNS-Worker-Knoten mithilfe der Cluster-IP und der CoreDNS-Pod-IP durch. -
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. -
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. -
UpdateChecksOnNodes— Setzt die internechecksOnNodesVariable auf, um anzuzeigen, dasstruePrüfungen auf Knotenebene durchgeführt wurden. -
CleanupK8sAuthenticationInfrastructure- WirdAWSSupport-SetupK8sApiProxyForEKSmit demCleanupVorgang zum Entfernen der Lambda-Proxyfunktion und der zugehörigen Ressourcen ausgeführt, die während der Automatisierung erstellt wurden. -
UpdateK8sInfrastructreDeleted— Setzt die interneK8sInfrastructreDeletedVariable auf.true -
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. -
CollectOutputFromAllRunCommandSteps- Sammelt und konsolidiert die Ergebnisse alleraws:runCommandSchritte, die während der Automatisierung ausgeführt wurden. -
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.