View a markdown version of this page

AWSSupport-TroubleshootEKSDNSFailure - AWS Systems Manager Riferimento all'Automation Runbook

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

AWSSupport-TroubleshootEKSDNSFailure

Descrizione

Il AWSSupport-TroubleshootEKSDNSFailure runbook aiuta a risolvere i problemi relativi ai pod e alla configurazione CoredNS in Amazon Elastic Kubernetes Service (Amazon EKS) quando le applicazioni o i pod riscontrano errori di risoluzione DNS. Il runbook convalida le impostazioni DNS VPC, ispeziona l'implementazione di CoreDNS e controlla la configurazione di Horizontal Pod Autoscaler (HPA) ConfigMap, raccoglie i log CoreDNS ed esegue controlli di risoluzione DNS sui nodi di lavoro. Facoltativamente, è possibile creare un'istanza Amazon Elastic Compute Cloud di prova nella stessa sottorete del nodo di lavoro problematico per eseguire controlli di risoluzione DNS senza richiedere l'accesso diretto al nodo.

Importante

La modalità di autenticazione del cluster Amazon EKS deve essere impostata su API oAPI_AND_CONFIG_MAP. Questo runbook implementa una funzione ( AWS Lambda Lambda) come proxy per effettuare chiamate API Kubernetes autenticate e ripulisce tutte le risorse create al termine dell'esecuzione.

Esegui questa automazione (console)

Tipo di documento

Automazione

Proprietario

Amazon

Piattaforme

LinuxmacOS, Windows

Parametri

  • AutomationAssumeRole

    Tipo: AWS::IAM::Role: :Arn

    Descrizione: (Facoltativo) L'Amazon Resource Name (ARN) del ruolo AWS Identity and Access Management (IAM) che consente a Systems Manager Automation di eseguire le azioni per tuo conto. Se non viene specificato alcun ruolo, Systems Manager Automation utilizza le autorizzazioni dell'utente che avvia questo runbook.

  • EksClusterName

    Tipo: String

    Descrizione: (Obbligatorio) Il nome del cluster Amazon EKS di destinazione.

  • DnsName

    Tipo: String

    Impostazione predefinita: amazon.com

    Descrizione: (Facoltativo) Il suffisso del dominio stub per il nome di dominio che l'applicazione o il pod non riesce a risolvere.

  • ProblematicNodeInstanceId

    Tipo:: :Id AWS::EC2::Instance

    Descrizione: (Facoltativo) L'ID dell'istanza del nodo di lavoro in cui è in esecuzione l'applicazione che presenta errori di risoluzione DNS. Se fornito, il runbook crea un'istanza Amazon EC2 di prova nella stessa sottorete per eseguire controlli di risoluzione DNS. Utilizza questo parametro se il nodo di lavoro non si trova in una sottorete pubblica o se l'installazione bind-utils sul nodo di lavoro non è consentita.

  • CoreDnsNamespace

    Tipo: String

    Impostazione predefinita: kube-system

    Descrizione: (Facoltativo) Lo spazio dei nomi Kubernetes per i pod CoredNS.

  • S3 BucketName

    Tipo: AWS::S3::Bucket: :Nome

    Descrizione: (Facoltativo) Il nome del bucket Amazon Simple Storage Service in cui vengono caricati i log di risoluzione dei problemi di CoredNS.

  • LambdaRoleArn

    Tipo: :Arn AWS::IAM::Role

    Descrizione: (Facoltativo) L'ARN del ruolo IAM per la funzione proxy Lambda. Se non viene fornito, il runbook crea un ruolo denominato Automation-K8sProxy-Role-<ExecutionId> con le policy gestite AWSLambdaBasicExecutionRole eAWSLambdaVPCAccessExecutionRole. Si consiglia di fornire il proprio ruolo.

Autorizzazioni IAM richieste

Il AutomationAssumeRole parametro richiede le seguenti azioni per utilizzare correttamente il runbook.

  • 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

Fasi del documento

  1. AssertIfTargetClusterExists- Verifica che il cluster Amazon EKS specificato in EksClusterName esista e si trovi nello ACTIVE stato. Se il cluster non viene trovato o non è attivo, il runbook passa a. GenerateReport

  2. UpdateEksClusterExists- Imposta la eksClusterExists variabile interna da utilizzare nella generazione true di report.

  3. GetVpcDnsSettings- Recupera le enableDnsHostnames impostazioni enableDnsSupport e le impostazioni per Amazon Virtual Private Cloud associato al cluster Amazon EKS.

  4. BranchOnVpcDnsSettings- Verifica se entrambe le impostazioni DNS VPC sono abilitate. Se una delle due è disabilitata, il runbook passa a. GenerateReport Altrimenti, procede a. DeployK8sAuthApisResources

  5. DeployK8sAuthApisResources- Esegue AWSSupport-SetupK8sApiProxyForEKS per implementare una funzione Lambda come proxy per effettuare chiamate API Kubernetes autenticate al cluster Amazon EKS.

  6. RetrieveCoreDNSDeployment- Recupera informazioni sull'implementazione di CoreDNS, tra cui la disponibilità dei pod, lo stato dei container e la disponibilità dei nodi che ospitano i pod CoredNS. Recupera anche l'IP del cluster CoredNS.

  7. RetrieveAndInspectCoreDNSConfigMap- Recupera il ConfigMap CoredNS dal cluster Amazon EKS e verifica eventuali problemi di configurazione, incluse le impostazioni del dominio stub per il dominio specificato in. DnsName

  8. ValidateHpaConfiguration- Verifica se un Horizontal Pod Autoscaler (HPA) è configurato per la distribuzione CoredNS nello spazio dei nomi specificato.

  9. CheckS3BucketPublicStatus- Verifica che il bucket Amazon S3 specificato S3BucketName in non consenta l'accesso pubblico o anonimo in lettura o scrittura.

  10. CollectLogToS3- Raccoglie i log dei pod CoredNS e li carica nel bucket Amazon S3 specificato.

  11. BranchOnProblematicNodeInstanceId- Verifica se ProblematicNodeInstanceId viene fornito e se esistono nodi host CoredNS. Se entrambe le condizioni sono soddisfatte, si procede a. VerifyThatProblematicNodeInstanceBelongsToCluster Altrimenti, si ramifica verso. BranchOnCoreDnsDeployment

  12. VerifyThatProblematicNodeInstanceBelongsToCluster- Conferma che l'istanza specificata in ProblematicNodeInstanceId è un nodo di lavoro nel cluster Amazon EKS.

  13. UpdateProblematicNodeInstanceStanding- Imposta la problematicNodeInstanceStanding variabile interna sutrue.

  14. GetProblematicInstanceDetails- Recupera l'ID AMI, il tipo di istanza, l'ID di sottorete e gli ID del gruppo di sicurezza del nodo di lavoro problematico da utilizzare durante la creazione dell'istanza Amazon EC2 di prova.

  15. CreateProbingInfrastructure- Crea un profilo di istanza e analizza l'istanza Amazon EC2 tramite AWS CloudFormation uno stack nella stessa sottorete del nodo di lavoro problematico. Lo stack ha un nome. AWSSupport-TroubleshootEKSDNSFailure-<ExecutionId>

  16. GetProbingInstanceId- Recupera l'ID dell'istanza Amazon EC2 di prova dagli CloudFormation output dello stack.

  17. WaitForProbingInstanceSSMAgentStateToBeOnline- Attende che l'agente Amazon EC2 Systems Manager sull'istanza Amazon EC2 che esegue il test riporti uno stato prima di procedereOnline.

  18. RetrieveCoreDNSPodsIPFromProblematicNode- Recupera gli indirizzi IP del pod CoredNS visti dal nodo di lavoro problematico.

  19. PerformDNSResolutionOnProbingEC2Instance- Esegue controlli di risoluzione DNS sull'istanza Amazon EC2 che esegue il test utilizzando l'IP del cluster e l'IP del pod CoredNS.

  20. DeleteCloudFormationStack- Elimina lo CloudFormation stack che ha creato l'istanza e il profilo dell'istanza Amazon EC2 di prova.

  21. UpdateCfnStackDeleted- Imposta la variabile interna su. cfnStackDeleted true

  22. BranchOnCoreDnsDeployment- Verifica se non ProblematicNodeInstanceId è stato fornito e se esistono nodi host CoredNS. Se entrambe le condizioni sono soddisfatte, si procede a. PerformDNSResolutionOnCoreDnsWorkerNodes Altrimenti, procede a. CleanupK8sAuthenticationInfrastructure

  23. BranchOnCoreDnsNodesExistForRunCommandSteps- Verifica se esistono nodi host CoredNS prima di eseguire i passaggi. aws:runCommand Se non esistono nodi (ad esempio, quando CoredNS ha zero repliche), passa a. CleanupK8sAuthenticationInfrastructure

  24. PerformDNSResolutionOnCoreDnsWorkerNodes- Esegue controlli di risoluzione DNS direttamente sui nodi di lavoro CoreDNS utilizzando l'IP del cluster e l'IP del pod CoreDNS.

  25. VerifyNameserverMatchAndKubeProxyLogsAndIPTableEntries- Verifica che l'IP del nameserver corrisponda all'IP del cluster, controlla l'accesso del pod kube-proxy al server API e convalida le voci iptables kube-dns sui nodi di lavoro CoredNS.

  26. VerifyPPSThrottlingOnENIs- Verifica il limite DNS packets-per-second (PPS) per Elastic Network Interface (ENI) sui nodi di lavoro CoredNS per identificare potenziali limitazioni.

  27. UpdateChecksOnNodes- Imposta la checksOnNodes variabile interna su per indicare che sono stati eseguiti controlli true a livello di nodo.

  28. CleanupK8sAuthenticationInfrastructure- Esegue AWSSupport-SetupK8sApiProxyForEKS con l'Cleanupoperazione di rimozione della funzione proxy Lambda e delle risorse associate create durante l'automazione.

  29. UpdateK8sInfrastructreDeleted- Imposta la K8sInfrastructreDeleted variabile interna su. true

  30. CleanUpAllResources- Esegue una pulizia completa di tutte le risorse rimanenti, incluse lo CloudFormation stack e la funzione proxy Lambda, nel caso in cui le fasi di pulizia precedenti non siano state completate correttamente.

  31. CollectOutputFromAllRunCommandSteps- Raccoglie e consolida l'output di tutti i aws:runCommand passaggi eseguiti durante l'automazione.

  32. GenerateReport- Compila i risultati di tutti i passaggi precedenti in un rapporto di valutazione completo che copre le impostazioni DNS VPC, lo stato di implementazione di CoredNS, la configurazione, la configurazione HPA ConfigMap , lo stato della raccolta dei log e i risultati del controllo della risoluzione DNS.

Output

GenerateReport.EvalReport- Un rapporto completo di tutti i controlli di risoluzione dei problemi DNS eseguiti, inclusi i risultati e le procedure di correzione consigliate.