View a markdown version of this page

AWSSupport-TroubleshootEKSDNSFailure - AWS Systems Manager Référence du manuel d'automatisation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWSSupport-TroubleshootEKSDNSFailure

Description

Le AWSSupport-TroubleshootEKSDNSFailure runbook permet de résoudre les problèmes liés aux pods CoreDNS et à la configuration dans Amazon Elastic Kubernetes Service (Amazon EKS) lorsque des applications ou des pods rencontrent des problèmes de résolution DNS. Le runbook valide les paramètres DNS du VPC, inspecte le déploiement de CoreDNS et vérifie la configuration HPA (Horizontal Pod Autoscaler) ConfigMap, collecte les journaux CoreDNS et effectue des contrôles de résolution DNS sur les nœuds de travail. Facultativement, une instance Amazon Elastic Compute Cloud d'analyse peut être créée dans le même sous-réseau que le nœud de travail problématique pour effectuer des vérifications de résolution DNS sans avoir besoin d'un accès direct au nœud.

Important

Le mode d'authentification du cluster Amazon EKS doit être défini sur API ouAPI_AND_CONFIG_MAP. Ce runbook déploie une fonction ( AWS Lambda Lambda) en tant que proxy pour effectuer des appels d'API Kubernetes authentifiés et nettoie toutes les ressources créées à la fin de l'exécution.

Exécuter cette automatisation (console)

Type de document

 Automatisation

Propriétaire

Amazon

Plateformes

LinuxmacOS, Windows

Paramètres

  • AutomationAssumeRole

    Type : AWS::IAM::Role ::Arn

    Description : (Facultatif) Le nom de ressource Amazon (ARN) du rôle Gestion des identités et des accès AWS (IAM) qui permet à Systems Manager Automation d'effectuer les actions en votre nom. Si aucun rôle n'est spécifié, Systems Manager Automation utilise les autorisations de l'utilisateur qui lance ce runbook.

  • EksClusterName

    Type : Chaîne

    Description : (Obligatoire) Le nom du cluster Amazon EKS cible.

  • DnsName

    Type : Chaîne

    Par défaut : amazon.com

    Description : (Facultatif) Le suffixe de domaine stub pour le nom de domaine que l'application ou le pod ne parvient pas à résoudre.

  • ProblematicNodeInstanceId

    Type : AWS::EC2::Instance :Id

    Description : (Facultatif) ID d'instance du nœud de travail sur lequel s'exécute l'application présentant des erreurs de résolution DNS. Lorsqu'il est fourni, le runbook crée une instance d'analyse Amazon EC2 dans le même sous-réseau pour effectuer des vérifications de résolution DNS. Utilisez ce paramètre si le nœud de travail ne se trouve pas dans un sous-réseau public ou si l'installation bind-utils sur le nœud de travail n'est pas autorisée.

  • CoreDnsNamespace

    Type : Chaîne

    Par défaut : kube-system

    Description : (Facultatif) L'espace de noms Kubernetes pour les pods CoreDNS.

  • S3 BucketName

    Type : AWS::S3::Bucket :Nom

    Description : (Facultatif) Nom du compartiment Amazon Simple Storage Service dans lequel les journaux de résolution des problèmes CoreDNS sont chargés.

  • LambdaRoleArn

    Type : AWS::IAM::Role ::Arn

    Description : (Facultatif) L'ARN du rôle IAM pour la fonction proxy Lambda. S'il n'est pas fourni, le runbook crée un rôle nommé Automation-K8sProxy-Role-<ExecutionId> avec les politiques AWSLambdaVPCAccessExecutionRole gérées AWSLambdaBasicExecutionRole et. Il est recommandé de fournir votre propre rôle.

Autorisations IAM requises

Le AutomationAssumeRole paramètre nécessite les actions suivantes pour utiliser correctement le 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

Étapes de document

  1. AssertIfTargetClusterExists- Vérifie que le cluster Amazon EKS spécifié dans EksClusterName existe et qu'il est dans son ACTIVE état actuel. Si le cluster est introuvable ou n'est pas actif, le runbook passe à. GenerateReport

  2. UpdateEksClusterExists- Définit la eksClusterExists variable interne à utiliser lors true de la génération de rapports.

  3. GetVpcDnsSettings- Récupère les enableDnsHostnames paramètres enableDnsSupport et pour l'Amazon Virtual Private Cloud associé au cluster Amazon EKS.

  4. BranchOnVpcDnsSettings- Vérifie si les deux paramètres DNS du VPC sont activés. Si l'un ou l'autre est désactivé, le runbook passe à. GenerateReport Dans le cas contraire, passez àDeployK8sAuthApisResources.

  5. DeployK8sAuthApisResources- S'exécute AWSSupport-SetupK8sApiProxyForEKS pour déployer une fonction Lambda en tant que proxy pour effectuer des appels d'API Kubernetes authentifiés vers le cluster Amazon EKS.

  6. RetrieveCoreDNSDeployment- Récupère des informations sur le déploiement de CoreDNS, notamment le niveau de préparation des pods, l'état du conteneur et le niveau de préparation des nœuds hébergeant des pods CoreDNS. Récupère également l'adresse IP du cluster CoreDNS.

  7. RetrieveAndInspectCoreDNSConfigMap- Récupère le ConfigMap CoreDNS du cluster Amazon EKS et vérifie les problèmes de configuration, y compris les paramètres du domaine stub pour le domaine spécifié dans. DnsName

  8. ValidateHpaConfiguration- Vérifie si un Horizontal Pod Autoscaler (HPA) est configuré pour le déploiement CoreDNS dans l'espace de noms spécifié.

  9. CheckS3BucketPublicStatus- Vérifie que le compartiment Amazon S3 spécifié dans n'S3BucketNameautorise pas l'accès public ou anonyme en lecture ou en écriture.

  10. CollectLogToS3- Collecte les journaux du pod CoreDNS et les télécharge dans le compartiment Amazon S3 spécifié.

  11. BranchOnProblematicNodeInstanceId- Vérifie s'il ProblematicNodeInstanceId est fourni et si les nœuds hôtes CoreDNS existent. Si les deux conditions sont remplies, passe àVerifyThatProblematicNodeInstanceBelongsToCluster. Dans le cas contraire, les branches sont dirigées versBranchOnCoreDnsDeployment.

  12. VerifyThatProblematicNodeInstanceBelongsToCluster- Confirme que l'instance spécifiée dans ProblematicNodeInstanceId est un nœud de travail dans le cluster Amazon EKS.

  13. UpdateProblematicNodeInstanceStanding- Définit la problematicNodeInstanceStanding variable interne surtrue.

  14. GetProblematicInstanceDetails- Récupère l'ID AMI, le type d'instance, l'ID de sous-réseau et les identifiants de groupe de sécurité du nœud de travail problématique afin de les utiliser lors de la création de l'instance Amazon EC2 d'analyse.

  15. CreateProbingInfrastructure- Crée un profil d'instance et analyse l'instance Amazon EC2 via AWS CloudFormation une pile située dans le même sous-réseau que le nœud de travail problématique. La pile est nomméeAWSSupport-TroubleshootEKSDNSFailure-<ExecutionId>.

  16. GetProbingInstanceId- Récupère l'ID de l'instance Amazon EC2 de sondage à partir CloudFormation des sorties de la pile.

  17. WaitForProbingInstanceSSMAgentStateToBeOnline- Attend que l'agent Amazon EC2 Systems Manager sur l'instance Amazon EC2 en cours d'analyse indique un état avant de continuerOnline.

  18. RetrieveCoreDNSPodsIPFromProblematicNode- Récupère les adresses IP du module CoreDNS telles qu'elles apparaissent depuis le nœud de travail problématique.

  19. PerformDNSResolutionOnProbingEC2Instance- Exécute des contrôles de résolution DNS sur l'instance Amazon EC2 interrogée à l'aide de l'adresse IP du cluster et de l'adresse IP du pod CoreDNS.

  20. DeleteCloudFormationStack- Supprime la CloudFormation pile qui a créé l'instance et le profil d'instance Amazon EC2 à examiner.

  21. UpdateCfnStackDeleted- Définit la cfnStackDeleted variable interne surtrue.

  22. BranchOnCoreDnsDeployment- Vérifie s'il n'ProblematicNodeInstanceIda pas été fourni et si les nœuds hôtes CoreDNS existent. Si les deux conditions sont remplies, passe àPerformDNSResolutionOnCoreDnsWorkerNodes. Dans le cas contraire, passez àCleanupK8sAuthenticationInfrastructure.

  23. BranchOnCoreDnsNodesExistForRunCommandSteps- Vérifie si les nœuds hôtes CoreDNS existent avant d'exécuter les étapes. aws:runCommand S'il n'existe aucun nœud (par exemple, lorsque CoreDNS ne possède aucune réplique), passe à. CleanupK8sAuthenticationInfrastructure

  24. PerformDNSResolutionOnCoreDnsWorkerNodes- Exécute des contrôles de résolution DNS directement sur les nœuds de travail CoreDNS à l'aide de l'adresse IP du cluster et de l'adresse IP du pod CoreDNS.

  25. VerifyNameserverMatchAndKubeProxyLogsAndIPTableEntries- Vérifie que l'adresse IP du serveur de noms correspond à l'adresse IP du cluster, vérifie l'accès du pod kube-proxy au serveur API et valide les entrées kube-dns iptables sur les nœuds de travail CoreDNS.

  26. VerifyPPSThrottlingOnENIs- Vérifie la limite DNS packets-per-second (PPS) par Elastic Network Interface (ENI) sur les nœuds de travail CoreDNS afin d'identifier les éventuels ralentissements.

  27. UpdateChecksOnNodes- Définit la checksOnNodes variable interne sur true pour indiquer que des vérifications au niveau du nœud ont été effectuées.

  28. CleanupK8sAuthenticationInfrastructure- S'exécute AWSSupport-SetupK8sApiProxyForEKS avec l'Cleanupopération de suppression de la fonction proxy Lambda et des ressources associées créées lors de l'automatisation.

  29. UpdateK8sInfrastructreDeleted- Définit la K8sInfrastructreDeleted variable interne surtrue.

  30. CleanUpAllResources- Effectue un nettoyage complet de toutes les ressources restantes, y compris la CloudFormation pile et la fonction proxy Lambda, au cas où les étapes de nettoyage précédentes ne se seraient pas terminées correctement.

  31. CollectOutputFromAllRunCommandSteps- Collecte et consolide le résultat de toutes les aws:runCommand étapes exécutées lors de l'automatisation.

  32. GenerateReport- Compile les résultats de toutes les étapes précédentes dans un rapport d'évaluation complet portant sur les paramètres DNS des VPC, l'état du déploiement de CoreDNS, la configuration, la configuration HPA ConfigMap , l'état de la collecte des journaux et les résultats du contrôle de résolution DNS.

Sorties

GenerateReport.EvalReport- Un rapport complet de toutes les vérifications de résolution des problèmes DNS effectuées, y compris les résultats et les mesures correctives recommandées.