

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

 **Descripción** 

El `AWSSupport-TroubleshootEKSDNSFailure` manual ayuda a solucionar problemas con los pods de CoreDNS y la configuración en Amazon Elastic Kubernetes Service (Amazon EKS) cuando las aplicaciones o los pods encuentran errores en la resolución de DNS. El manual valida la configuración de DNS de la VPC, inspecciona la implementación de CoreDNS y comprueba la configuración del escalador automático de pods horizontales (HPA) ConfigMap, recopila los registros de CoreDNS y realiza comprobaciones de resolución de DNS en los nodos de trabajo. Opcionalmente, se puede crear una instancia de Amazon Elastic Compute Cloud de sondeo en la misma subred que el nodo de trabajo problemático para realizar comprobaciones de resolución de DNS sin necesidad de acceso directo al nodo.

**importante**  
El modo de autenticación del clúster de Amazon EKS debe estar establecido en `API` o`API_AND_CONFIG_MAP`. Este manual implementa una función ( AWS Lambda Lambda) como proxy para realizar llamadas autenticadas a la API de Kubernetes y limpia todos los recursos creados al final de la ejecución.

 [Ejecuta esta automatización (consola)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootEKSDNSFailure) 

**Tipo de documento**

Automatización

**Propietario**

Amazon

**Plataformas**

Linux, macOS, Windows

**Parámetros**
+ AutomationAssumeRole

  Escriba: :Arn AWS::IAM::Role

  Descripción: (opcional) el Nombre de recurso de Amazon (ARN) del rol de AWS Identity and Access Management (IAM) que permite a Systems Manager Automation realizar las acciones en su nombre. Si no se especifica ningún rol, Systems Manager Automation utiliza los permisos del usuario que comienza este manual de procedimientos.
+ EksClusterName

  Tipo: cadena

  Descripción: (obligatorio) El nombre del clúster Amazon EKS de destino.
+ DnsName

  Tipo: cadena

  Predeterminado: amazon.com

  Descripción: (opcional) El sufijo de dominio auxiliar del nombre de dominio que la aplicación o el pod no pueden resolver.
+ ProblematicNodeInstanceId

  Escriba: :Id AWS::EC2::Instance

  Descripción: (opcional) El ID de instancia del nodo de trabajo en el que se ejecuta la aplicación que experimenta errores de resolución de DNS. Cuando se proporciona, el runbook crea una instancia Amazon EC2 de sondeo en la misma subred para realizar comprobaciones de resolución de DNS. Utilice este parámetro si el nodo de trabajo no está en una subred pública o si no está permitida la instalación `bind-utils` en el nodo de trabajo.
+ CoreDnsNamespace

  Tipo: cadena

  Predeterminado: kube-system

  Descripción: (opcional) El espacio de nombres de Kubernetes para los pods de CoreDNS.
+ S3 BucketName

  Tipo: AWS::S3::Bucket :Nombre

  Descripción: (opcional) El nombre del depósito de Amazon Simple Storage Service donde se cargan los registros de solución de problemas de CoredNS.
+ LambdaRoleArn

  Escriba: :Arn AWS::IAM::Role

  Descripción: (opcional) El ARN del rol de IAM para la función de proxy Lambda. Si no se proporciona, el manual de instrucciones crea un rol `Automation-K8sProxy-Role-<ExecutionId>` con el nombre de las `AWSLambdaBasicExecutionRole` políticas administradas. `AWSLambdaVPCAccessExecutionRole` Se recomienda proporcionar su propia función.

**Permisos de IAM necesarios**

El parámetro `AutomationAssumeRole` requiere las siguientes acciones para utilizar el manual de procedimientos correctamente.
+ `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`

 **Pasos de documentos** 

1. `AssertIfTargetClusterExists`- Comprueba que el clúster de Amazon EKS especificado en `EksClusterName` existe y se encuentra en ese `ACTIVE` estado. Si el clúster no se encuentra o no está activo, el runbook pasa a. `GenerateReport`

1. `UpdateEksClusterExists`- Establece la `eksClusterExists` variable interna `true` para utilizarla en la generación de informes.

1. `GetVpcDnsSettings`- Recupera la `enableDnsHostnames` configuración `enableDnsSupport` y la configuración de Amazon Virtual Private Cloud asociada al clúster Amazon EKS.

1. `BranchOnVpcDnsSettings`- Comprueba si ambas configuraciones de DNS de la VPC están habilitadas. Si alguna de ellas está deshabilitada, el runbook pasa a. `GenerateReport` De lo contrario, continúa con. `DeployK8sAuthApisResources`

1. `DeployK8sAuthApisResources`- Se ejecuta `AWSSupport-SetupK8sApiProxyForEKS` para implementar una función Lambda como proxy para realizar llamadas autenticadas a la API de Kubernetes al clúster de Amazon EKS.

1. `RetrieveCoreDNSDeployment`- Recupera información sobre la implementación de CoreDNS, incluida la preparación del pod, el estado del contenedor y la preparación de los nodos que alojan los pods de CoreDNS. También recupera la IP del clúster de CoredNS.

1. `RetrieveAndInspectCoreDNSConfigMap`- Recupera los ConfigMap CoredNS del clúster de Amazon EKS y comprueba si hay problemas de configuración, incluida la configuración del dominio stub del dominio especificado en. `DnsName`

1. `ValidateHpaConfiguration`- Comprueba si hay un escalador automático de pod horizontal (HPA) configurado para la implementación de CoredNS en el espacio de nombres especificado.

1. `CheckS3BucketPublicStatus`- Valida que el bucket de Amazon S3 especificado en `S3BucketName` no permite el acceso de lectura o escritura público o anónimo.

1. `CollectLogToS3`- Recopila los registros de los pods de CoredNS y los carga en el bucket de Amazon S3 especificado.

1. `BranchOnProblematicNodeInstanceId`- Comprueba si `ProblematicNodeInstanceId` se proporciona y si existen nodos host de CoredNS. Si se cumplen ambas condiciones, continúa con. `VerifyThatProblematicNodeInstanceBelongsToCluster` De lo contrario, se ramifica a`BranchOnCoreDnsDeployment`.

1. `VerifyThatProblematicNodeInstanceBelongsToCluster`- Confirma que la instancia especificada en `ProblematicNodeInstanceId` es un nodo de trabajo del clúster de Amazon EKS.

1. `UpdateProblematicNodeInstanceStanding`- Establece la `problematicNodeInstanceStanding` variable interna en`true`.

1. `GetProblematicInstanceDetails`- Recupera el ID de AMI, el tipo de instancia, el ID de subred y los ID del grupo de seguridad del nodo de trabajo problemático para usarlos al crear la instancia de Amazon EC2 de sondeo.

1. `CreateProbingInfrastructure`- Crea un perfil de instancia y explora la instancia de Amazon EC2 a través de AWS CloudFormation una pila en la misma subred que el nodo de trabajo problemático. La pila recibe un nombre. `AWSSupport-TroubleshootEKSDNSFailure-<ExecutionId>`

1. `GetProbingInstanceId`- Recupera el ID de la instancia Amazon EC2 de sondeo de las salidas de CloudFormation la pila.

1. `WaitForProbingInstanceSSMAgentStateToBeOnline`- Espera a que el agente Amazon EC2 Systems Manager de la instancia de Amazon EC2 que está sondeando informe de un estado antes de continuar`Online`.

1. `RetrieveCoreDNSPodsIPFromProblematicNode`- Recupera las direcciones IP del pod de CoredNS vistas desde el nodo de trabajo problemático.

1. `PerformDNSResolutionOnProbing``EC2Instance`- Ejecuta comprobaciones de resolución de DNS en la instancia de Amazon EC2 que está sondeando mediante la IP del clúster y la IP del pod de CoreDNS.

1. `DeleteCloudFormationStack`- Elimina la CloudFormation pila que creó la instancia y el perfil de instancia de Amazon EC2 de sondeo.

1. `UpdateCfnStackDeleted`- Establece la variable interna `cfnStackDeleted` en. `true`

1. `BranchOnCoreDnsDeployment`- Comprueba si no `ProblematicNodeInstanceId` se proporcionó y si existen nodos host de CoredNS. Si se cumplen ambas condiciones, continúa con. `PerformDNSResolutionOnCoreDnsWorkerNodes` De lo contrario, procede a`CleanupK8sAuthenticationInfrastructure`.

1. `BranchOnCoreDnsNodesExistForRunCommandSteps`- Comprueba si existen nodos host de CoredNS antes de ejecutar los pasos. `aws:runCommand` Si no existe ningún nodo (por ejemplo, cuando CoreDNS no tiene réplicas), salta a. `CleanupK8sAuthenticationInfrastructure`

1. `PerformDNSResolutionOnCoreDnsWorkerNodes`- Ejecuta comprobaciones de resolución de DNS directamente en los nodos de trabajo de CoreDNS mediante la IP del clúster y la IP del pod de CoreDNS.

1. `VerifyNameserverMatchAndKubeProxyLogsAndIPTableEntries`- Comprueba que la IP del servidor de nombres coincide con la IP del clúster, comprueba el acceso del pod kube-proxy al servidor API y valida las entradas iptables de kube-dns en los nodos de trabajo de CoreDNS.

1. `VerifyPPSThrottlingOnENIs`- Comprueba el límite de DNS packets-per-second (PPS) por interfaz de red elástica (ENI) en los nodos de trabajo de CoreDNS para identificar posibles limitaciones.

1. `UpdateChecksOnNodes`- Establece la `checksOnNodes` variable interna para indicar que se realizaron comprobaciones `true` a nivel de nodo.

1. `CleanupK8sAuthenticationInfrastructure`- Se ejecuta `AWSSupport-SetupK8sApiProxyForEKS` con la `Cleanup` operación para eliminar la función proxy de Lambda y los recursos asociados creados durante la automatización.

1. `UpdateK8sInfrastructreDeleted`- Establece la `K8sInfrastructreDeleted` variable interna en. `true`

1. `CleanUpAllResources`- Realiza una limpieza exhaustiva de los recursos restantes, incluida la CloudFormation pila y la función de proxy Lambda, en caso de que los pasos de limpieza anteriores no se hayan completado correctamente.

1. `CollectOutputFromAllRunCommandSteps`- Recopila y consolida el resultado de todos los `aws:runCommand` pasos que se ejecutaron durante la automatización.

1. `GenerateReport`- Recopila los resultados de todos los pasos anteriores en un informe de evaluación exhaustivo que abarca la configuración de DNS de la VPC, el estado de la implementación de CoreDNS, la configuración, la configuración de HPA ConfigMap , el estado de la recopilación de registros y los resultados de las comprobaciones de resolución del DNS.

 **Salidas** 

`GenerateReport.EvalReport`- Un informe completo de todas las comprobaciones de solución de problemas de DNS realizadas, incluidas las conclusiones y las medidas de corrección recomendadas.