Ajudar a melhorar esta página
Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.
Solução de problemas no Amazon EKS Connector
Este tópico aborda alguns dos erros comuns que você pode encontrar ao usar o Amazon EKS Connector, incluindo instruções sobre como solucioná-los e soluções de contorno.
Solução básica de problemas
Esta seção descreve etapas para diagnosticar o problema se ele não estiver claro.
Verifique o status do Amazon EKS Connector
Verifique o status do Amazon EKS Connector.
kubectl get pods -n eks-connector
Inspecione logs do Amazon EKS Connector
O Pod do Amazon EKS Connector consiste em três contêineres. Para recuperar logs completos de todos esses contêineres para que possa inspecioná-los, execute os seguintes comandos:
-
connector-init
kubectl logs eks-connector-0 --container connector-init -n eks-connector kubectl logs eks-connector-1 --container connector-init -n eks-connector
-
connector-proxy
kubectl logs eks-connector-0 --container connector-proxy -n eks-connector kubectl logs eks-connector-1 --container connector-proxy -n eks-connector
-
connector-agent
kubectl exec eks-connector-0 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log kubectl exec eks-connector-1 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log
Obtenha o nome efetivo do cluster
Os clusters do Amazon EKS são identificados exclusivamente como clusterName
em uma única conta da AWS e Região da AWS. Se você tiver vários clusters conectados no Amazon EKS, será possível confirmar em qual cluster do Amazon EKS o cluster atual do Kubernetes está registrado. Para fazê-lo, insira o seguinte para descobrir o clusterName
do cluster atual.
kubectl exec eks-connector-0 --container connector-agent -n eks-connector \ -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/" kubectl exec eks-connector-1 --container connector-agent -n eks-connector \ -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/"
Comandos diversos
Os comandos a seguir são úteis para recuperar informações necessárias para solucionar problemas.
-
Use o comando a seguir para coletar imagens usadas pelo Pods no Amazon EKS Connector.
kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.containers[*].image}" | tr -s '[[:space:]]' '\n'
-
Use o comando a seguir para coletar os nomes dos nós nos quais o Amazon EKS Connector está sendo executado.
kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.nodeName}" | tr -s '[[:space:]]' '\n'
-
Execute o comando a seguir para obter as versões de cliente e servidor do Kubernetes.
kubectl version
-
Execute o comando a seguir para obter informações sobre os nós.
kubectl get nodes -o wide --show-labels
Problema do helm: 403 proibido
Se você recebeu o seguinte erro ao executar os comandos de instalação do helm:
Error: INSTALLATION FAILED: unexpected status from HEAD request to https://public.ecr.aws/v2/eks-connector/eks-connector-chart/manifests/0.0.6: 403 Forbidden
Você pode executar a seguinte linha para corrigi-lo:
docker logout public.ecr.aws
Erro do console: o cluster está paralisado no estado Pending (Pendente)
Se o cluster ficar paralisado no estado Pending
no console do Amazon EKS depois que você o registrou, isso pode indicar que o Amazon EKS Connector ainda não conectou o cluster à AWS com êxito. Em um cluster registrado, o estado Pending
significa que a conexão não foi estabelecida com êxito. Para solucionar esse problema, certifique-se de que aplicou o manifesto ao cluster do Kubernetes de destino. Se você o aplicou ao cluster, mas o cluster permanece no estado Pending
, pode ser que o statefulset eks-connector
não esteja íntegro. Para solucionar esse problema, consulte Os Pods do Amazon EKS Connector estão em um loop de pane neste tópico.
Erro do console: User
“system:serviceaccount:eks-connector:eks-connector” can't impersonate resource
“users” in API group “”
no escopo do cluster
O Amazon EKS Connector usa a representação do usuárioeks-connector
da AWS precisa receber uma permissão para representar o usuário do Kubernetescorrespondente usando um ARN do IAM como o nome de usuário do Kubernetes. Nos exemplos a seguir, o ARN do IAM é mapeado para um usuário do Kubernetes.
-
O usuário do IAM
, da conta da AWSjohn
é mapeado para um usuário do Kubernetes. As melhores práticas do IAM recomendam que você conceda permissões para perfis e não para usuários.111122223333
arn:aws:iam::
111122223333
:user/john
-
O perfil do IAM de
da conta da AWSadmin
é mapeado para um usuário do Kubernetes:111122223333
arn:aws:iam::
111122223333
:role/admin
O resultado é um perfil do IAM, em vez do ARN da sessão do AWS STS.
Para obter instruções sobre como configurar o ClusterRole
e o ClusterRoleBinding
para conceder à conta de serviço do eks-connector
o privilégio de representar o usuário mapeado, consulte Conceder acesso a uma entidade principal do IAM para visualizar recursos do Kubernetes em um cluster. Substitua %IAM_ARN%
no modelo pelo ARN do IAM do AWS Management Console da entidade principal do IAM.
Erro do console: [...] is forbidden: User [...] cannot list
resource “[...] in API group”
no escopo do cluster
Considere o seguinte problema. O Amazon EKS Connector representou com êxito a entidade principal do IAM no AWS Management Console da solicitação no cluster do Kubernetes de destino. Porém, a entidade principal representada não tem as permissões RBAC para as operações de API do Kubernetes.
Para resolver esse problema, existem dois métodos de conceder permissões a usuários adicionais. Se você instalou anteriormente o eks-connector por meio do chart do Helm, poderá conceder acesso aos usuários facilmente executando o comando a seguir. Substitua o userARN1
e o userARN2
por uma lista dos ARNs dos perfis do IAM para conceder acesso para visualização dos recursos do Kubernetes:
helm upgrade eks-connector oci://public.ecr.aws/eks-connector/eks-connector-chart \ --reuse-values \ --set 'authentication.allowedUserARNs={userARN1,userARN2}'
Ou, como administrador do cluster, conceda aos usuários individuais do Kubernetes o nível apropriado de privilégios de RBAC. Para ter mais informações e exemplos, consulte Conceder acesso a uma entidade principal do IAM para visualizar recursos do Kubernetes em um cluster.
Erro do console: O Amazon EKS não consegue se comunicar com o Kubernetes servidor de API do cluster. O cluster deve estar em um estado ATIVO para estabelecer uma conexão bem-sucedida. Tente novamente em alguns minutos.
Se o serviço Amazon EKS não conseguir se comunicar com o Amazon EKS Connector no cluster de destino, pode ser por um dos seguintes motivos:
-
O Amazon EKS Connector no cluster de destino não está íntegro.
-
Baixa conectividade ou conexão interrompida entre o cluster de destino e a Região da AWS.
Para resolver esse problema, verifique os logs do Amazon EKS Connector. Se você não encontrar nenhum erro para o Amazon EKS Connector, tente fazer a conexão novamente após alguns minutos. Se você enfrentar regularmente alta latência ou conectividade intermitente para o cluster de destino, considere registrá-lo novamente em uma Região da AWS mais perto de você.
Os Pods do Amazon EKS Connector estão em um loop de pane
Muitos motivos podem fazer um Pod do Amazon EKS Connector entrar no status CrashLoopBackOff
. É provável que esse problema envolva o contêiner connector-init
. Verifique o status do Pod do Amazon EKS Connector.
kubectl get pods -n eks-connector
Veja um exemplo de saída abaixo.
NAME READY STATUS RESTARTS AGE
eks-connector-0 0/2 Init:CrashLoopBackOff 1 7s
Se a saída for semelhante à saída anterior, consulte Inspecione logs do Amazon EKS Connector para solucionar o problema.
Failed to initiate eks-connector:
InvalidActivation
Quando você inicia o Amazon EKS Connector pela primeira vez, ele registra um activationId
e um activationCode
na Amazon Web Services. O registro pode falhar, o que pode fazer com que o contêiner connector-init
falhe com um erro similar ao erro a seguir.
F1116 20:30:47.261469 1 init.go:43] failed to initiate eks-connector: InvalidActivation:
Para solucionar esse problema, considere as seguintes causas e correções recomendadas:
-
O registro pode ter falhado porque o
activationId
e oactivationCode
não estavam no arquivo de manifesto. Se for esse o caso, verifique se os valores corretos retornados na operação da APIRegisterCluster
estavam corretos e se oactivationCode
está no arquivo de manifesto. OactivationCode
é adicionado aos segredos do Kubernetes, portanto, deve ser codificado embase64
. Para ter mais informações, consulte Etapa 1: Registrar o cluster. -
O registro pode ter falhado porque sua ativação expirou. Isso ocorre porque, por motivos de segurança, você deve ativar o Amazon EKS Connector em até três dias após registrar o cluster. Para resolver esse problema, certifique-se de que o manifesto do Amazon EKS Connector seja aplicado ao cluster do Kubernetes de destino antes da data e hora de expiração. Para confirmar a data de expiração da ativação, chame a operação da API
DescribeCluster
.aws eks describe-cluster --name
my-cluster
No exemplo de resposta a seguir, a data e a hora de expiração estão registradas como
2021-11-12T22:28:51.101000-08:00
.{ "cluster": { "name": "
my-cluster
", "arn": "arn:aws:eks:region
:111122223333
:cluster/my-cluster
", "createdAt": "2021-11-09T22:28:51.449000-08:00", "status": "FAILED", "tags": { }, "connectorConfig": { "activationId": "00000000-0000-0000-0000-000000000000", "activationExpiry": "2021-11-12T22:28:51.101000-08:00", "provider": "OTHER", "roleArn": "arn:aws:iam::111122223333
:role/my-connector-role
" } } }Se a
activationExpiry
já tiver passado, cancele o registro do cluster e registre-o novamente. Isso gerará uma nova ativação.
O nó do cluster está sem conectividade de saída
Para funcionar corretamente, o Amazon EKS Connector requer conectividade de saída para vários endpoints da AWS. Não é possível conectar um cluster privado sem conectividade de saída a uma Região da AWS de destino. Para solucionar esse problema, você deve adicionar a conectividade de saída necessária. Para obter mais informações sobre requisitos de conector, consulte Considerações sobre o Amazon EKS Connector.
O Amazon EKS Connector Pods está no estado ImagePullBackOff
Se você executar o comando get pods
e os Pods estiverem no estado ImagePullBackOff
, não poderão funcionar corretamente. Se os Pods do Amazon EKS Connector estiverem no estado ImagePullBackOff
, não poderão funcionar corretamente. Verifique o status dos Pods do Amazon EKS Connector.
kubectl get pods -n eks-connector
Veja um exemplo de saída abaixo.
NAME READY STATUS RESTARTS AGE
eks-connector-0 0/2 Init:ImagePullBackOff 0 4s
O arquivo de manifesto padrão do Amazon EKS Connector referencia imagens da Amazon ECR Public Gallery