

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

 **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` o`API_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)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootEKSDNSFailure) 

**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` e`AWSLambdaVPCAccessExecutionRole`. 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`

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

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

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

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

1. `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.

1. `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`

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

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

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

1. `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`

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

1. `UpdateProblematicNodeInstanceStanding`- Imposta la `problematicNodeInstanceStanding` variabile interna su`true`.

1. `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.

1. `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>`

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

1. `WaitForProbingInstanceSSMAgentStateToBeOnline`- Attende che l'agente Amazon EC2 Systems Manager sull'istanza Amazon EC2 che esegue il test riporti uno stato prima di procedere`Online`.

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

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

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

1. `UpdateCfnStackDeleted`- Imposta la variabile interna su. `cfnStackDeleted` `true`

1. `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`

1. `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`

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

1. `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.

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

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

1. `CleanupK8sAuthenticationInfrastructure`- Esegue `AWSSupport-SetupK8sApiProxyForEKS` con l'`Cleanup`operazione di rimozione della funzione proxy Lambda e delle risorse associate create durante l'automazione.

1. `UpdateK8sInfrastructreDeleted`- Imposta la `K8sInfrastructreDeleted` variabile interna su. `true`

1. `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.

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

1. `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.