View a markdown version of this page

Solução de problemas das funcionalidades do EKS - Amazon EKS

Ajudar a melhorar esta página

Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.

Solução de problemas das funcionalidades do EKS

nota

As funcionalidades do EKS são totalmente gerenciadas e executadas de forma externa ao cluster. Você não tem acesso direto aos namespaces do controlador. A solução de problemas se concentra na integridade das funcionalidades, no status dos recursos e na configuração do IAM. Você pode configurar a entrega de logs do controlador para obter visibilidade do comportamento do controlador. Consulte Acessar logs do controlador de Funcionalidades do EKS.

Abordagem geral para a solução de problemas

Ao solucionar problemas das funcionalidades do EKS, siga esta abordagem geral:

  1. Verifique a integridade da funcionalidade: use aws eks describe-capability para visualizar o status da funcionalidade e possíveis problemas de integridade

  2. Verifique o status dos recursos: confira os recursos do Kubernetes (CRDs) que você criou, observando condições de status e eventos

  3. Revise os logs do controlador: se a entrega de logs estiver configurada, consulte os logs do controlador para ver erros e detalhes de reconciliação

  4. Analise as permissões do IAM: garanta que o perfil da funcionalidade conte com as permissões necessárias

  5. Verifique a configuração: confirme se a configuração específica da funcionalidade está correta

Usar logs do controlador para solucionar problemas

Se você configurou a entrega de logs do controlador (consulte Acessar logs do controlador de Funcionalidades do EKS), poderá consultar os logs para identificar erros de reconciliação, conflitos de recursos e problemas de configuração.

Consultar erros em todos os controladores

fields @timestamp, controller, message, error | filter level = "error" | sort @timestamp desc | limit 50

Filtrar logs para um determinado controlador de serviço do ACK

Use o campo controllerGroup para isolar os logs de um determinado controlador de serviço do ACK:

fields @timestamp, message, error | filter controllerGroup = "s3.services.k8s.aws" | filter level = "error" | sort @timestamp desc

Para filtrar ainda mais por tipo de recurso (por exemplo, somente logs de SecurityGroup do controlador do EC2):

fields @timestamp, message, error | filter controllerGroup = "ec2.services.k8s.aws" | filter controllerKind = "SecurityGroup" | sort @timestamp desc | limit 100

Filtrar logs de uma aplicação específica do Argo CD

Use o campo application para isolar os logs de uma aplicação específica do Argo CD:

fields @timestamp, message, error | filter application = "my-application" | sort @timestamp desc | limit 100

Acompanhar a reconciliação de um recurso específico

Use o campo reconcileID para seguir um único ciclo de reconciliação:

fields @timestamp, level, message, error | filter reconcileID = "your-reconcile-id" | sort @timestamp asc

Padrões de log comuns que indicam problemas

  • Repetidos erros de reconciliação: o controlador não consegue alcançar o estado desejado para um recurso. Verifique os detalhes no campo error, como falhas de permissão do IAM ou configurações de recursos inválidas.

  • “Erro de reconciliação” com erros de API da AWS: o perfil da funcionalidade pode não ter permissões para a operação específica do serviço da AWS. Analise a mensagem de erro e atualize as políticas do IAM conforme necessário.

  • Nenhuma entrada de log para um recurso: se os logs de um recurso que espera que o controlador reconcilie não forem exibidos, verifique se a funcionalidade está ACTIVE e se o recurso existe em um namespace que a funcionalidade pode acessar.

Verificação da integridade da funcionalidade

Todas as funcionalidades do EKS fornecem informações de integridade por meio do console do EKS e da API describe-capability.

Console do:

  1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

  2. Selecione o nome do seu cluster.

  3. Escolha a guia Observabilidade.

  4. Escolha Monitorar cluster.

  5. Escolha a guia Funcionalidades para visualizar a integridade e o status de todas as funcionalidades.

A guia Funcionalidades apresenta:

  • Nome e tipo da funcionalidade

  • Status atual

  • Problemas de integridade, acompanhados de descrição

AWS CLI:

aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-capability-name

A resposta inclui:

  • status: estado atual da funcionalidade (CREATING, ACTIVE, UPDATING, DELETING, CREATE_FAILED ou UPDATE_FAILED)

  • integridade: informações de integridade, incluindo quaisquer problemas detectados pela funcionalidade

Status comuns das funcionalidades

CREATING: a funcionalidade está sendo configurada.

ACTIVE: a funcionalidade está em execução e pronta para uso. Caso os recursos não estejam funcionando como esperado, verifique o status desses recursos e as permissões do IAM.

UPDATING: as alterações de configuração estão sendo aplicadas. Aguarde até que o status retorne para ACTIVE.

CREATE_FAILED ou UPDATE_FAILED: o processo de criação ou de atualização apresentou um erro. Confira a seção destinada à integridade para obter mais detalhes. Causas comuns:

  • Política de confiança do perfil do IAM incorreta ou ausente

  • Perfil do IAM não existe ou não pode ser acessado

  • Problemas de acesso ao cluster

  • Parâmetros de configuração inválidos

Verificação do status dos recursos do Kubernetes

As funcionalidades do EKS criam e gerenciam definições de recursos personalizados (CRDs, na sigla em inglês) do Kubernetes em seu cluster. Ao solucionar problemas, verifique o status dos recursos que você criou:

# List resources of a specific type kubectl get resource-kind -A # Describe a specific resource to see conditions and events kubectl describe resource-kind resource-name -n namespace # View resource status conditions kubectl get resource-kind resource-name -n namespace -o jsonpath='{.status.conditions}' # View events related to the resource kubectl get events --field-selector involvedObject.name=resource-name -n namespace

As condições de status do recurso fornecem informações sobre:

  • A prontidão do recurso

  • Quaisquer erros encontrados

  • O estado atual de reconciliação

Análise das permissões do IAM e do acesso ao cluster

Diversos problemas relacionados às funcionalidades são causados por permissões inadequadas no IAM ou pela falta de configuração de acesso ao cluster. Verifique tanto as permissões do perfil da funcionalidade quanto as entradas de acesso ao cluster.

Verificação das permissões do perfil do IAM

Confirme se o perfil da funcionalidade detém todas as permissões necessárias:

# List attached managed policies aws iam list-attached-role-policies --role-name my-capability-role # List inline policies aws iam list-role-policies --role-name my-capability-role # Get specific policy details aws iam get-role-policy --role-name my-capability-role --policy-name policy-name # View the role's trust policy aws iam get-role --role-name my-capability-role --query 'Role.AssumeRolePolicyDocument'

É necessário que a política de confiança autorize a entidade principal do serviço capabilities.eks.amazonaws.com:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "capabilities.eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Verificação das entradas de acesso e das políticas de acesso do EKS

Todas as funcionalidades necessitam de entradas de acesso e de políticas de acesso apropriadas no cluster em que são executadas.

Verifique se a entrada de acesso existe:

aws eks list-access-entries \ --cluster-name my-cluster \ --region region-code

Procure o ARN do perfil da funcionalidade na lista. Se estiver ausente, a funcionalidade não poderá acessar o cluster.

Verifique as políticas de acesso anexadas à entrada:

aws eks list-associated-access-policies \ --cluster-name my-cluster \ --principal-arn arn:aws:iam::111122223333:role/my-capability-role \ --region region-code

Todas as funcionalidades requerem políticas de acesso apropriadas:

  • ACK: necessita de permissões para criar e gerenciar recursos do Kubernetes

  • kro: necessita de permissões para criar e gerenciar recursos do Kubernetes

  • Argo CD: necessita de permissões para criar e gerenciar Applications e requer entradas de acesso nos clusters remotos para implantações em vários clusters

Para implantações de vários clusters do Argo CD:

Ao realizar implantações em clusters remotos, assegure-se de que o perfil da funcionalidade disponha de uma entrada de acesso em cada cluster de destino:

# Check Access Entry on target cluster aws eks describe-access-entry \ --cluster-name target-cluster \ --principal-arn arn:aws:iam::111122223333:role/argocd-capability-role \ --region region-code

Se a entrada de acesso estiver ausente em algum cluster de destino, o Argo CD não conseguirá implantar aplicações nele. Consulte Registro de clusters de destino para obter detalhes sobre a configuração.

Solução de problemas específicas por funcionalidade

Para obter orientações detalhadas de solução de problemas específicas relacionadas a cada tipo de funcionalidade:

Problemas comuns em todas as funcionalidades

Funcionalidade travada no estado CREATING

Se uma funcionalidade permanecer no estado CREATING por mais tempo do que o esperado:

  1. Verifique a integridade da funcionalidade para ver se existem problemas específicos no console (Observabilidade > Monitorar cluster > guia Funcionalidades) ou usando a AWS CLI:

    aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-capability-name \ --query 'capability.health'
  2. Verifique se o perfil do IAM existe e conta com a política de confiança correta

  3. Certifique-se de que o cluster esteja acessível e íntegro

  4. Verifique se há algum problema no nível do cluster que possa impedir a configuração de recursos

Recursos não estão sendo criados ou atualizados

Caso a funcionalidade esteja ACTIVE, mas os recursos não estejam sendo criados ou atualizados:

  1. Verifique o status do recurso em busca de erros

  2. Verifique as permissões do IAM para os serviços da AWS específicos (ACK) ou para os repositórios (Argo CD)

  3. Verifique as permissões RBAC para a criação dos recursos subjacentes (kro)

  4. Analise as especificações do recurso em busca de erros de validação

Problemas de integridade da funcionalidade

Se o comando describe-capability apresentar problemas de integridade:

  1. Leia atentamente as descrições dos problemas, pois elas geralmente indicam a causa específica

  2. Corrija a causa raiz (por exemplo, permissões do IAM, erros de configuração e entre outros)

  3. A funcionalidade será recuperada automaticamente assim que o problema for resolvido

Próximas etapas