Solução de problemas em funcionalidades do ACK - 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 em funcionalidades do ACK

Este tópico fornece orientações para a solução de problemas à funcionalidade do EKS para o ACK, incluindo verificações de integridade da funcionalidade, verificação do status dos recursos e problemas relacionados à permissão do IAM.

nota

As funcionalidades do EKS são totalmente gerenciadas e executadas de forma externa ao cluster. Você não tem acesso aos logs do controlador nem aos namespaces do controlador. A solução de problemas se concentra na integridade da funcionalidade, no status dos recursos e na configuração do IAM.

Funcionalidade está no status ACTIVE, mas os recursos não estão sendo criados

Se a sua funcionalidade do ACK apresentar o status ACTIVE, mas os recursos não estiverem sendo criados na AWS, verifique a integridade da funcionalidade, o status dos recursos e as permissões do IAM.

Verifique a integridade da funcionalidade:

É possível visualizar problemas de integridade e de status da funcionalidade no console do EKS ou usando a AWS CLI.

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.

AWS CLI:

# View capability status and health aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-ack # Look for issues in the health section

Causas comuns:

  • Ausência de permissões do IAM: o perfil da funcionalidade não conta com permissões para o serviço da AWS

  • Namespace incorreto: recursos criados em um namespace sem o IAMRoleSelector adequado

  • Especificação de recurso inválida: é necessário verificar as condições de status do recurso para encontrar erros de validação

  • Controle de utilização da API: os limites de taxa da API da AWS foram atingidos

  • Webhooks de admissão: os webhooks de admissão estão impedindo o controlador de atualizar o status do recurso

Verifique o status do recurso:

# Describe the resource to see conditions and events kubectl describe bucket my-bucket -n default # Look for status conditions kubectl get bucket my-bucket -n default -o jsonpath='{.status.conditions}' # View resource events kubectl get events --field-selector involvedObject.name=my-bucket -n default

Verifique as permissões do IAM:

# View the Capability Role's policies aws iam list-attached-role-policies --role-name my-ack-capability-role aws iam list-role-policies --role-name my-ack-capability-role # Get specific policy details aws iam get-role-policy --role-name my-ack-capability-role --policy-name policy-name

Recursos são criados na AWS, mas que não aparecem no Kubernetes

O ACK rastreia apenas os recursos criados por meio de manifestos do Kubernetes. Para gerenciar recursos existentes da AWS com o ACK, empregue o recurso de adoção.

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: existing-bucket annotations: services.k8s.aws/adoption-policy: "adopt-or-create" spec: name: my-existing-bucket-name

Para obter mais informações sobre a adoção de recursos, consulte Conceitos do ACK.

Recursos entre contas não estão sendo criados

Se os recursos não estiverem sendo criados em uma conta de destino da AWS ao usar os seletores de perfil do IAM, verifique a relação de confiança e a configuração do IAMRoleSelector.

Verifique a relação de confiança:

# Check the trust policy in the target account role aws iam get-role --role-name cross-account-ack-role --query 'Role.AssumeRolePolicyDocument'

A política de confiança deve permitir que o perfil da funcionalidade da conta de origem a assuma.

Confirme a configuração do IAMRoleSelector:

# List IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Describe specific selector kubectl describe iamroleselector my-selector

Verifique o alinhamento do namespace:

Os IAMRoleSelectors são recursos de escopo do cluster, mas operam em namespaces específicos. Certifique-se de que os recursos do ACK estejam em um namespace que corresponda ao selecionador de namespace do IAMRoleSelector:

# Check resource namespace kubectl get bucket my-cross-account-bucket -n production # List all IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Check which namespace the selector targets kubectl get iamroleselector my-selector -o jsonpath='{.spec.namespaceSelector}'

Verifique a condição IAMRoleSelected:

Verifique se o IAMRoleSelector foi correspondido com sucesso ao seu recurso, consultando a condição ACK.IAMRoleSelected:

# Check if IAMRoleSelector was matched kubectl get bucket my-cross-account-bucket -n production -o jsonpath='{.status.conditions[?(@.type=="ACK.IAMRoleSelected")]}'

Se a condição for False ou estiver ausente, o selecionador de namespace do IAMRoleSelector não corresponde ao namespace do recurso. Verifique se o namespaceSelector do seletor corresponde aos rótulos de namespace do seu recurso.

Verifique as permissões do perfil da funcionalidade:

O perfil de funcionalidade precisa das permissões sts:AssumeRole e sts:TagSession para o perfil da conta de destino:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole", "sts:TagSession"], "Resource": "arn:aws:iam::[.replaceable]`444455556666`:role/[.replaceable]`cross-account-ack-role`" } ] }

Para obter informações detalhadas sobre a configuração entre contas, consulte Configuração das permissões do ACK.

Próximas etapas