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-utilsen 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 lasAWSLambdaBasicExecutionRolepolíticas administradas.AWSLambdaVPCAccessExecutionRoleSe 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
-
AssertIfTargetClusterExists- Comprueba que el clúster de Amazon EKS especificado enEksClusterNameexiste y se encuentra en eseACTIVEestado. Si el clúster no se encuentra o no está activo, el runbook pasa a.GenerateReport -
UpdateEksClusterExists- Establece laeksClusterExistsvariable internatruepara utilizarla en la generación de informes. -
GetVpcDnsSettings- Recupera laenableDnsHostnamesconfiguraciónenableDnsSupporty la configuración de Amazon Virtual Private Cloud asociada al clúster Amazon EKS. -
BranchOnVpcDnsSettings- Comprueba si ambas configuraciones de DNS de la VPC están habilitadas. Si alguna de ellas está deshabilitada, el runbook pasa a.GenerateReportDe lo contrario, continúa con.DeployK8sAuthApisResources -
DeployK8sAuthApisResources- Se ejecutaAWSSupport-SetupK8sApiProxyForEKSpara implementar una función Lambda como proxy para realizar llamadas autenticadas a la API de Kubernetes al clúster de Amazon EKS. -
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. -
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 -
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. -
CheckS3BucketPublicStatus- Valida que el bucket de Amazon S3 especificado enS3BucketNameno permite el acceso de lectura o escritura público o anónimo. -
CollectLogToS3- Recopila los registros de los pods de CoredNS y los carga en el bucket de Amazon S3 especificado. -
BranchOnProblematicNodeInstanceId- Comprueba siProblematicNodeInstanceIdse proporciona y si existen nodos host de CoredNS. Si se cumplen ambas condiciones, continúa con.VerifyThatProblematicNodeInstanceBelongsToClusterDe lo contrario, se ramifica aBranchOnCoreDnsDeployment. -
VerifyThatProblematicNodeInstanceBelongsToCluster- Confirma que la instancia especificada enProblematicNodeInstanceIdes un nodo de trabajo del clúster de Amazon EKS. -
UpdateProblematicNodeInstanceStanding- Establece laproblematicNodeInstanceStandingvariable interna entrue. -
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. -
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> -
GetProbingInstanceId- Recupera el ID de la instancia Amazon EC2 de sondeo de las salidas de CloudFormation la pila. -
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. -
RetrieveCoreDNSPodsIPFromProblematicNode- Recupera las direcciones IP del pod de CoredNS vistas desde el nodo de trabajo problemático. -
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. -
DeleteCloudFormationStack- Elimina la CloudFormation pila que creó la instancia y el perfil de instancia de Amazon EC2 de sondeo. -
UpdateCfnStackDeleted- Establece la variable internacfnStackDeleteden.true -
BranchOnCoreDnsDeployment- Comprueba si noProblematicNodeInstanceIdse proporcionó y si existen nodos host de CoredNS. Si se cumplen ambas condiciones, continúa con.PerformDNSResolutionOnCoreDnsWorkerNodesDe lo contrario, procede aCleanupK8sAuthenticationInfrastructure. -
BranchOnCoreDnsNodesExistForRunCommandSteps- Comprueba si existen nodos host de CoredNS antes de ejecutar los pasos.aws:runCommandSi no existe ningún nodo (por ejemplo, cuando CoreDNS no tiene réplicas), salta a.CleanupK8sAuthenticationInfrastructure -
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. -
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. -
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. -
UpdateChecksOnNodes- Establece lachecksOnNodesvariable interna para indicar que se realizaron comprobacionestruea nivel de nodo. -
CleanupK8sAuthenticationInfrastructure- Se ejecutaAWSSupport-SetupK8sApiProxyForEKScon laCleanupoperación para eliminar la función proxy de Lambda y los recursos asociados creados durante la automatización. -
UpdateK8sInfrastructreDeleted- Establece laK8sInfrastructreDeletedvariable interna en.true -
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. -
CollectOutputFromAllRunCommandSteps- Recopila y consolida el resultado de todos losaws:runCommandpasos que se ejecutaron durante la automatización. -
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.