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-utilssur 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 politiquesAWSLambdaVPCAccessExecutionRolegéréesAWSLambdaBasicExecutionRoleet. 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
-
AssertIfTargetClusterExists- Vérifie que le cluster Amazon EKS spécifié dansEksClusterNameexiste et qu'il est dans sonACTIVEétat actuel. Si le cluster est introuvable ou n'est pas actif, le runbook passe à.GenerateReport -
UpdateEksClusterExists- Définit laeksClusterExistsvariable interne à utiliser lorstruede la génération de rapports. -
GetVpcDnsSettings- Récupère lesenableDnsHostnamesparamètresenableDnsSupportet pour l'Amazon Virtual Private Cloud associé au cluster Amazon EKS. -
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 à.GenerateReportDans le cas contraire, passez àDeployK8sAuthApisResources. -
DeployK8sAuthApisResources- S'exécuteAWSSupport-SetupK8sApiProxyForEKSpour déployer une fonction Lambda en tant que proxy pour effectuer des appels d'API Kubernetes authentifiés vers le cluster Amazon EKS. -
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. -
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 -
ValidateHpaConfiguration- Vérifie si un Horizontal Pod Autoscaler (HPA) est configuré pour le déploiement CoreDNS dans l'espace de noms spécifié. -
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. -
CollectLogToS3- Collecte les journaux du pod CoreDNS et les télécharge dans le compartiment Amazon S3 spécifié. -
BranchOnProblematicNodeInstanceId- Vérifie s'ilProblematicNodeInstanceIdest 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. -
VerifyThatProblematicNodeInstanceBelongsToCluster- Confirme que l'instance spécifiée dansProblematicNodeInstanceIdest un nœud de travail dans le cluster Amazon EKS. -
UpdateProblematicNodeInstanceStanding- Définit laproblematicNodeInstanceStandingvariable interne surtrue. -
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. -
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>. -
GetProbingInstanceId- Récupère l'ID de l'instance Amazon EC2 de sondage à partir CloudFormation des sorties de la pile. -
WaitForProbingInstanceSSMAgentStateToBeOnline- Attend que l'agent Amazon EC2 Systems Manager sur l'instance Amazon EC2 en cours d'analyse indique un état avant de continuerOnline. -
RetrieveCoreDNSPodsIPFromProblematicNode- Récupère les adresses IP du module CoreDNS telles qu'elles apparaissent depuis le nœud de travail problématique. -
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. -
DeleteCloudFormationStack- Supprime la CloudFormation pile qui a créé l'instance et le profil d'instance Amazon EC2 à examiner. -
UpdateCfnStackDeleted- Définit lacfnStackDeletedvariable interne surtrue. -
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. -
BranchOnCoreDnsNodesExistForRunCommandSteps- Vérifie si les nœuds hôtes CoreDNS existent avant d'exécuter les étapes.aws:runCommandS'il n'existe aucun nœud (par exemple, lorsque CoreDNS ne possède aucune réplique), passe à.CleanupK8sAuthenticationInfrastructure -
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. -
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. -
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. -
UpdateChecksOnNodes- Définit lachecksOnNodesvariable interne surtruepour indiquer que des vérifications au niveau du nœud ont été effectuées. -
CleanupK8sAuthenticationInfrastructure- S'exécuteAWSSupport-SetupK8sApiProxyForEKSavec l'Cleanupopération de suppression de la fonction proxy Lambda et des ressources associées créées lors de l'automatisation. -
UpdateK8sInfrastructreDeleted- Définit laK8sInfrastructreDeletedvariable interne surtrue. -
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. -
CollectOutputFromAllRunCommandSteps- Collecte et consolide le résultat de toutes lesaws:runCommandétapes exécutées lors de l'automatisation. -
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.