

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# `AWSSupport-TroubleshootEKSDNSFailure`
<a name="automation-awssupport-troubleshooteksdnsfailure"></a>

 **Descrição** 

O `AWSSupport-TroubleshootEKSDNSFailure` runbook ajuda a solucionar problemas com os pods e a configuração do CoreDNS no Amazon Elastic Kubernetes Service (Amazon EKS) quando aplicativos ou pods encontram falhas na resolução do DNS. O runbook valida as configurações de DNS da VPC, inspeciona a implantação do CoreDNS e verifica a configuração do Horizontal Pod Autoscaler (HPA) ConfigMap, coleta registros do CoreDNS e realiza verificações de resolução de DNS nos nós de trabalho. Opcionalmente, uma instância de sondagem do Amazon Elastic Compute Cloud pode ser criada na mesma sub-rede do nó de trabalho problemático para realizar verificações de resolução de DNS sem exigir acesso direto ao nó.

**Importante**  
O modo de autenticação do cluster Amazon EKS deve ser definido como `API` ou`API_AND_CONFIG_MAP`. Esse runbook implanta uma função ( AWS Lambda Lambda) como proxy para fazer chamadas autenticadas da API Kubernetes e limpar todos os recursos criados no final da execução.

 [Executar esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootEKSDNSFailure) 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

Linux, macOS, Windows

**Parâmetros**
+ AutomationAssumeRole

  Tipo AWS::IAM::Role: :Arn

  Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
+ EksClusterName

  Tipo: string

  Descrição: (Obrigatório) O nome do cluster Amazon EKS de destino.
+ DnsName

  Tipo: string

  Padrão: amazon.com

  Descrição: (Opcional) O sufixo do domínio stub para o nome de domínio que o aplicativo ou pod não está conseguindo resolver.
+ ProblematicNodeInstanceId

  Tipo AWS::EC2::Instance: :Id

  Descrição: (Opcional) O ID da instância do nó de trabalho em que o aplicativo com erros de resolução de DNS está sendo executado. Quando fornecido, o runbook cria uma instância de sondagem do Amazon EC2 na mesma sub-rede para realizar verificações de resolução de DNS. Use esse parâmetro se o nó de trabalho não estiver em uma sub-rede pública ou se a instalação `bind-utils` no nó de trabalho não for permitida.
+ CoreDnsNamespace

  Tipo: string

  Padrão: kube-system

  Descrição: (Opcional) O namespace Kubernetes para pods CoreDNS.
+ S3 BucketName

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

  Descrição: (Opcional) O nome do bucket do Amazon Simple Storage Service no qual os registros de solução de problemas do CoreDNS são carregados.
+ LambdaRoleArn

  Tipo AWS::IAM::Role: :Arn

  Descrição: (Opcional) O ARN da função do IAM para a função de proxy Lambda. Se não for fornecido, o runbook cria uma função nomeada `Automation-K8sProxy-Role-<ExecutionId>` com as políticas `AWSLambdaBasicExecutionRole` `AWSLambdaVPCAccessExecutionRole` gerenciadas. É recomendável fornecer sua própria função.

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.
+ `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`

 **Etapas do documento** 

1. `AssertIfTargetClusterExists`- Verifica se o cluster Amazon EKS especificado em `EksClusterName` existe e está no `ACTIVE` estado. Se o cluster não for encontrado ou não estiver ativo, o runbook pulará para. `GenerateReport`

1. `UpdateEksClusterExists`- Define a `eksClusterExists` variável interna `true` para uso na geração de relatórios.

1. `GetVpcDnsSettings`- Recupera as `enableDnsHostnames` configurações `enableDnsSupport` e as configurações da Amazon Virtual Private Cloud associada ao cluster Amazon EKS.

1. `BranchOnVpcDnsSettings`- Verifica se as duas configurações de VPC DNS estão habilitadas. Se um deles estiver desativado, o runbook passa para. `GenerateReport` Caso contrário, prossegue para. `DeployK8sAuthApisResources`

1. `DeployK8sAuthApisResources`- Executa `AWSSupport-SetupK8sApiProxyForEKS` para implantar uma função Lambda como proxy para fazer chamadas autenticadas da API Kubernetes para o cluster Amazon EKS.

1. `RetrieveCoreDNSDeployment`- Recupera informações sobre a implantação do CoreDNS, incluindo a prontidão do pod, o status do contêiner e a prontidão dos nós que hospedam os pods do CoreDNS. Também recupera o IP do cluster CoreDNS.

1. `RetrieveAndInspectCoreDNSConfigMap`- Recupera o ConfigMap CoreDNS do cluster Amazon EKS e verifica se há problemas de configuração, incluindo configurações de domínio stub para o domínio especificado em. `DnsName`

1. `ValidateHpaConfiguration`- Verifica se um escalador automático de pod horizontal (HPA) está configurado para a implantação do CoreDNS no namespace especificado.

1. `CheckS3BucketPublicStatus`- Valida que o bucket do Amazon S3 especificado `S3BucketName` em não permite acesso público ou anônimo de leitura ou gravação.

1. `CollectLogToS3`- Coleta os logs do pod CoreDNS e os carrega no bucket do Amazon S3 especificado.

1. `BranchOnProblematicNodeInstanceId`- Verifica se `ProblematicNodeInstanceId` é fornecido e se existem nós de host CoreDNS. Se ambas as condições forem atendidas, prossiga para`VerifyThatProblematicNodeInstanceBelongsToCluster`. Caso contrário, ramifica para`BranchOnCoreDnsDeployment`.

1. `VerifyThatProblematicNodeInstanceBelongsToCluster`- Confirma que a instância especificada em `ProblematicNodeInstanceId` é um nó de trabalho no cluster Amazon EKS.

1. `UpdateProblematicNodeInstanceStanding`- Define a `problematicNodeInstanceStanding` variável interna como`true`.

1. `GetProblematicInstanceDetails`- Recupera o ID da AMI, o tipo de instância, o ID da sub-rede e os IDs do grupo de segurança do nó de trabalho problemático para uso na criação da instância de sondagem do Amazon EC2.

1. `CreateProbingInfrastructure`- Cria um perfil de instância e analisa a instância do Amazon EC2 por meio de AWS CloudFormation uma pilha na mesma sub-rede do nó de trabalho problemático. A pilha tem um nome`AWSSupport-TroubleshootEKSDNSFailure-<ExecutionId>`.

1. `GetProbingInstanceId`- Recupera o ID da instância de sondagem do Amazon EC2 das saídas da CloudFormation pilha.

1. `WaitForProbingInstanceSSMAgentStateToBeOnline`- Espera que o agente do Amazon EC2 Systems Manager na instância sondadora do Amazon EC2 relate um status antes de continuar`Online`.

1. `RetrieveCoreDNSPodsIPFromProblematicNode`- Recupera os endereços IP do pod CoreDNS conforme vistos no nó de trabalho problemático.

1. `PerformDNSResolutionOnProbing``EC2Instance`- Executa verificações de resolução de DNS na instância de sondagem do Amazon EC2 usando o IP do cluster e o IP do pod CoreDNS.

1. `DeleteCloudFormationStack`- Exclui a CloudFormation pilha que criou a instância de sondagem do Amazon EC2 e o perfil da instância.

1. `UpdateCfnStackDeleted`- Define a `cfnStackDeleted` variável interna como`true`.

1. `BranchOnCoreDnsDeployment`- Verifica se não `ProblematicNodeInstanceId` foi fornecido e se existem nós de host CoreDNS. Se ambas as condições forem atendidas, prossiga para`PerformDNSResolutionOnCoreDnsWorkerNodes`. Caso contrário, prossegue para. `CleanupK8sAuthenticationInfrastructure`

1. `BranchOnCoreDnsNodesExistForRunCommandSteps`- Verifica se existem nós hospedeiros CoreDNS antes de executar as etapas. `aws:runCommand` Se não existirem nós (por exemplo, quando o CoreDNS tem zero réplicas), pule para. `CleanupK8sAuthenticationInfrastructure`

1. `PerformDNSResolutionOnCoreDnsWorkerNodes`- Executa verificações de resolução de DNS diretamente nos nós de trabalho do CoreDNS usando o IP do cluster e o IP do pod do CoreDNS.

1. `VerifyNameserverMatchAndKubeProxyLogsAndIPTableEntries`- Verifica se o IP do servidor de nomes corresponde ao IP do cluster, verifica o acesso do pod kube-proxy ao servidor da API e valida as entradas kube-dns iptables nos nós de trabalho do CoreDNS.

1. `VerifyPPSThrottlingOnENIs`- Verifica o limite de DNS packets-per-second (PPS) por Elastic Network Interface (ENI) nos nós de trabalho do CoreDNS para identificar possíveis limitações.

1. `UpdateChecksOnNodes`- Define a `checksOnNodes` variável interna `true` para indicar que as verificações em nível de nó foram realizadas.

1. `CleanupK8sAuthenticationInfrastructure`- Executa `AWSSupport-SetupK8sApiProxyForEKS` com a `Cleanup` operação para remover a função de proxy Lambda e os recursos associados criados durante a automação.

1. `UpdateK8sInfrastructreDeleted`- Define a `K8sInfrastructreDeleted` variável interna como`true`.

1. `CleanUpAllResources`- Executa uma limpeza abrangente de todos os recursos restantes, incluindo a CloudFormation pilha e a função de proxy Lambda, caso as etapas de limpeza anteriores não tenham sido concluídas com êxito.

1. `CollectOutputFromAllRunCommandSteps`- Coleta e consolida a saída de todas as `aws:runCommand` etapas que foram executadas durante a automação.

1. `GenerateReport`- Compila os resultados de todas as etapas anteriores em um relatório de avaliação abrangente que abrange as configurações de DNS da VPC, a integridade da implantação do CoreDNS, a configuração, a configuração do HPA ConfigMap , o status da coleta de registros e os resultados da verificação da resolução do DNS.

 **Saídas** 

`GenerateReport.EvalReport`- Um relatório abrangente de todas as verificações de solução de problemas de DNS realizadas, incluindo descobertas e etapas de correção recomendadas.