View a markdown version of this page

AWSSupport-TroubleshootEKSDNSFailure - AWS Systems Manager Referencia del manual de automatización

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

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 oAPI_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)

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

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

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

  4. 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

  5. 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.

  6. 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.

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

  8. 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.

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

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

  11. 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 aBranchOnCoreDnsDeployment.

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

  13. UpdateProblematicNodeInstanceStanding- Establece la problematicNodeInstanceStanding variable interna entrue.

  14. 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.

  15. 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>

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

  17. 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 continuarOnline.

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

  19. PerformDNSResolutionOnProbingEC2Instance- 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.

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

  21. UpdateCfnStackDeleted- Establece la variable interna cfnStackDeleted en. true

  22. 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 aCleanupK8sAuthenticationInfrastructure.

  23. 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

  24. 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.

  25. 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.

  26. 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.

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

  28. 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.

  29. UpdateK8sInfrastructreDeleted- Establece la K8sInfrastructreDeleted variable interna en. true

  30. 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.

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

  32. 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.