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
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 ou 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 com o status ACTIVE, mas os recursos não estão sendo criados
Se a funcionalidade do ACK exibir o status ACTIVE, mas os recursos não estiverem sendo criados na AWS, verifique a integridade da funcionalidade, o status do recurso 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:
-
Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.
-
Selecione o nome do seu cluster.
-
Escolha a guia Observabilidade.
-
Escolha Monitorar cluster.
-
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 \ --regionregion-code\ --cluster-namemy-cluster\ --capability-namemy-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 bucketmy-bucket-n default # Look for status conditions kubectl get bucketmy-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-namemy-ack-capability-roleaws iam list-role-policies --role-namemy-ack-capability-role# Get specific policy details aws iam get-role-policy --role-namemy-ack-capability-role--policy-namepolicy-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
Caso os recursos não sejam criados em uma conta da AWS de destino ao utilizar o seletor de perfil do IAM, certifique-se de verificar o relacionamento 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-namecross-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 iamroleselectormy-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 bucketmy-cross-account-bucket-nproduction# List all IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Check which namespace the selector targets kubectl get iamroleselectormy-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 bucketmy-cross-account-bucket-nproduction-o jsonpath='{.status.conditions[?(@.type=="ACK.IAMRoleSelected")]}'
Caso a condição seja False ou esteja ausente, o seletor de namespace do IAMRoleSelector não coincidirá com o 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": [.replaceable]`"arn:aws:iam::444455556666:role/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
-
Considerações sobre o ACK para o EKS: acesse considerações e práticas recomendadas do ACK
-
Configuração das permissões do ACK: configure permissões do IAM e padrões para várias contas
-
Conceitos do ACK: compreenda os conceitos do ACK e o ciclo de vida dos recursos
-
Solução de problemas das funcionalidades do EKS: acesse orientações gerais para solução de problemas de funcionalidades