As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
AWSSupport-TroubleshootEKSDNSFailure
Descrição
O AWSSupport-TroubleshootEKSDNSFailure runbook ajuda a solucionar problemas com os pods e a configuração do CoreDNS no Amazon Elastic Kubernetes Service (Amazon EKS) quando aplicativos ou pods encontram falhas na resolução do DNS. O runbook valida as configurações de DNS da VPC, inspeciona a implantação do CoreDNS e verifica a configuração do Horizontal Pod Autoscaler (HPA) ConfigMap, coleta registros do CoreDNS e realiza verificações de resolução de DNS nos nós de trabalho. Opcionalmente, uma instância de sondagem do Amazon Elastic Compute Cloud pode ser criada na mesma sub-rede do nó de trabalho problemático para realizar verificações de resolução de DNS sem exigir acesso direto ao nó.
Importante
O modo de autenticação do cluster Amazon EKS deve ser definido como API ouAPI_AND_CONFIG_MAP. Esse runbook implanta uma função ( AWS Lambda Lambda) como proxy para fazer chamadas autenticadas da API Kubernetes e limpar todos os recursos criados no final da execução.
Executar esta automação (console)
Tipo de documento
Automação
Proprietário
Amazon
Plataformas
Linux, macOS, Windows
Parâmetros
-
AutomationAssumeRole
Tipo AWS::IAM::Role: :Arn
Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
-
EksClusterName
Tipo: string
Descrição: (Obrigatório) O nome do cluster Amazon EKS de destino.
-
DnsName
Tipo: string
Padrão: amazon.com
Descrição: (Opcional) O sufixo do domínio stub para o nome de domínio que o aplicativo ou pod não está conseguindo resolver.
-
ProblematicNodeInstanceId
Tipo AWS::EC2::Instance: :Id
Descrição: (Opcional) O ID da instância do nó de trabalho em que o aplicativo com erros de resolução de DNS está sendo executado. Quando fornecido, o runbook cria uma instância de sondagem do Amazon EC2 na mesma sub-rede para realizar verificações de resolução de DNS. Use esse parâmetro se o nó de trabalho não estiver em uma sub-rede pública ou se a instalação
bind-utilsno nó de trabalho não for permitida. -
CoreDnsNamespace
Tipo: string
Padrão: kube-system
Descrição: (Opcional) O namespace Kubernetes para pods CoreDNS.
-
S3 BucketName
Tipo: AWS::S3::Bucket: :Nome
Descrição: (Opcional) O nome do bucket do Amazon Simple Storage Service no qual os registros de solução de problemas do CoreDNS são carregados.
-
LambdaRoleArn
Tipo AWS::IAM::Role: :Arn
Descrição: (Opcional) O ARN da função do IAM para a função de proxy Lambda. Se não for fornecido, o runbook cria uma função nomeada
Automation-K8sProxy-Role-<ExecutionId>com as políticasAWSLambdaBasicExecutionRoleAWSLambdaVPCAccessExecutionRolegerenciadas. É recomendável fornecer sua própria função.
Permissões obrigatórias do IAM
O parâmetro AutomationAssumeRole requer as seguintes ações para usar o runbook com êxito.
-
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
Etapas do documento
-
AssertIfTargetClusterExists- Verifica se o cluster Amazon EKS especificado emEksClusterNameexiste e está noACTIVEestado. Se o cluster não for encontrado ou não estiver ativo, o runbook pulará para.GenerateReport -
UpdateEksClusterExists- Define aeksClusterExistsvariável internatruepara uso na geração de relatórios. -
GetVpcDnsSettings- Recupera asenableDnsHostnamesconfiguraçõesenableDnsSupporte as configurações da Amazon Virtual Private Cloud associada ao cluster Amazon EKS. -
BranchOnVpcDnsSettings- Verifica se as duas configurações de VPC DNS estão habilitadas. Se um deles estiver desativado, o runbook passa para.GenerateReportCaso contrário, prossegue para.DeployK8sAuthApisResources -
DeployK8sAuthApisResources- ExecutaAWSSupport-SetupK8sApiProxyForEKSpara implantar uma função Lambda como proxy para fazer chamadas autenticadas da API Kubernetes para o cluster Amazon EKS. -
RetrieveCoreDNSDeployment- Recupera informações sobre a implantação do CoreDNS, incluindo a prontidão do pod, o status do contêiner e a prontidão dos nós que hospedam os pods do CoreDNS. Também recupera o IP do cluster CoreDNS. -
RetrieveAndInspectCoreDNSConfigMap- Recupera o ConfigMap CoreDNS do cluster Amazon EKS e verifica se há problemas de configuração, incluindo configurações de domínio stub para o domínio especificado em.DnsName -
ValidateHpaConfiguration- Verifica se um escalador automático de pod horizontal (HPA) está configurado para a implantação do CoreDNS no namespace especificado. -
CheckS3BucketPublicStatus- Valida que o bucket do Amazon S3 especificadoS3BucketNameem não permite acesso público ou anônimo de leitura ou gravação. -
CollectLogToS3- Coleta os logs do pod CoreDNS e os carrega no bucket do Amazon S3 especificado. -
BranchOnProblematicNodeInstanceId- Verifica seProblematicNodeInstanceIdé fornecido e se existem nós de host CoreDNS. Se ambas as condições forem atendidas, prossiga paraVerifyThatProblematicNodeInstanceBelongsToCluster. Caso contrário, ramifica paraBranchOnCoreDnsDeployment. -
VerifyThatProblematicNodeInstanceBelongsToCluster- Confirma que a instância especificada emProblematicNodeInstanceIdé um nó de trabalho no cluster Amazon EKS. -
UpdateProblematicNodeInstanceStanding- Define aproblematicNodeInstanceStandingvariável interna comotrue. -
GetProblematicInstanceDetails- Recupera o ID da AMI, o tipo de instância, o ID da sub-rede e os IDs do grupo de segurança do nó de trabalho problemático para uso na criação da instância de sondagem do Amazon EC2. -
CreateProbingInfrastructure- Cria um perfil de instância e analisa a instância do Amazon EC2 por meio de AWS CloudFormation uma pilha na mesma sub-rede do nó de trabalho problemático. A pilha tem um nomeAWSSupport-TroubleshootEKSDNSFailure-<ExecutionId>. -
GetProbingInstanceId- Recupera o ID da instância de sondagem do Amazon EC2 das saídas da CloudFormation pilha. -
WaitForProbingInstanceSSMAgentStateToBeOnline- Espera que o agente do Amazon EC2 Systems Manager na instância sondadora do Amazon EC2 relate um status antes de continuarOnline. -
RetrieveCoreDNSPodsIPFromProblematicNode- Recupera os endereços IP do pod CoreDNS conforme vistos no nó de trabalho problemático. -
PerformDNSResolutionOnProbingEC2Instance- Executa verificações de resolução de DNS na instância de sondagem do Amazon EC2 usando o IP do cluster e o IP do pod CoreDNS. -
DeleteCloudFormationStack- Exclui a CloudFormation pilha que criou a instância de sondagem do Amazon EC2 e o perfil da instância. -
UpdateCfnStackDeleted- Define acfnStackDeletedvariável interna comotrue. -
BranchOnCoreDnsDeployment- Verifica se nãoProblematicNodeInstanceIdfoi fornecido e se existem nós de host CoreDNS. Se ambas as condições forem atendidas, prossiga paraPerformDNSResolutionOnCoreDnsWorkerNodes. Caso contrário, prossegue para.CleanupK8sAuthenticationInfrastructure -
BranchOnCoreDnsNodesExistForRunCommandSteps- Verifica se existem nós hospedeiros CoreDNS antes de executar as etapas.aws:runCommandSe não existirem nós (por exemplo, quando o CoreDNS tem zero réplicas), pule para.CleanupK8sAuthenticationInfrastructure -
PerformDNSResolutionOnCoreDnsWorkerNodes- Executa verificações de resolução de DNS diretamente nos nós de trabalho do CoreDNS usando o IP do cluster e o IP do pod do CoreDNS. -
VerifyNameserverMatchAndKubeProxyLogsAndIPTableEntries- Verifica se o IP do servidor de nomes corresponde ao IP do cluster, verifica o acesso do pod kube-proxy ao servidor da API e valida as entradas kube-dns iptables nos nós de trabalho do CoreDNS. -
VerifyPPSThrottlingOnENIs- Verifica o limite de DNS packets-per-second (PPS) por Elastic Network Interface (ENI) nos nós de trabalho do CoreDNS para identificar possíveis limitações. -
UpdateChecksOnNodes- Define achecksOnNodesvariável internatruepara indicar que as verificações em nível de nó foram realizadas. -
CleanupK8sAuthenticationInfrastructure- ExecutaAWSSupport-SetupK8sApiProxyForEKScom aCleanupoperação para remover a função de proxy Lambda e os recursos associados criados durante a automação. -
UpdateK8sInfrastructreDeleted- Define aK8sInfrastructreDeletedvariável interna comotrue. -
CleanUpAllResources- Executa uma limpeza abrangente de todos os recursos restantes, incluindo a CloudFormation pilha e a função de proxy Lambda, caso as etapas de limpeza anteriores não tenham sido concluídas com êxito. -
CollectOutputFromAllRunCommandSteps- Coleta e consolida a saída de todas asaws:runCommandetapas que foram executadas durante a automação. -
GenerateReport- Compila os resultados de todas as etapas anteriores em um relatório de avaliação abrangente que abrange as configurações de DNS da VPC, a integridade da implantação do CoreDNS, a configuração, a configuração do HPA ConfigMap , o status da coleta de registros e os resultados da verificação da resolução do DNS.
Saídas
GenerateReport.EvalReport- Um relatório abrangente de todas as verificações de solução de problemas de DNS realizadas, incluindo descobertas e etapas de correção recomendadas.