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 do gateway do Amazon EKS Hybrid Nodes
Esta página fornece orientações para diagnosticar e resolver problemas comuns com o gateway do Amazon EKS Hybrid Nodes. Cada seção descreve um sintoma, causas possíveis, etapas de diagnóstico e resoluções. Para obter detalhes operacionais, consulte Operações de gateway do Amazon EKS Hybrid Nodes.
Pods em nós híbridos inacessíveis por meio da VPC
Os pods executados em nós híbridos não estão acessíveis por meio de recursos na VPC, como as instâncias do EC2, os balanceadores de carga ou o ambiente de gerenciamento do Kubernetes.
Causas possíveis:
-
As entradas da tabela de rotas da VPC estão ausentes ou direcionam para a ENI incorreta.
-
O pod líder do gateway não está em execução ou não concluiu a configuração.
-
O Cilium VTEP não está habilitado ou configurado nos nós híbridos.
-
A verificação de origem e de destino está habilitada na instância EC2 do gateway.
Etapas de diagnóstico:
-
Verifique as entradas da tabela de rotas da VPC. Verifique se as rotas para os CIDRs dos pods híbridos existem e direcionam para a ENI primária da instância de gateway ativa:
aws ec2 describe-route-tables \ --route-table-idsROUTE_TABLE_ID\ --query "RouteTables[].Routes[?DestinationCidrBlock=='[.replaceable]`POD_CIDR`']"Se as rotas estiverem ausentes, verifique os logs do gateway em busca de erros na tabela de rotas. Se as rotas direcionarem para a ENI incorreta, é possível que um failover não tenha sido concluído com êxito.
-
Verifique o status do pod do gateway e a eleição de líder. Confirme se dois pods de gateway estão em execução e se um mantém o lease de líder:
kubectl get pods -n eks-hybrid-nodes-gateway kubectl get lease -n eks-hybrid-nodes-gatewaySe nenhum pod detiver o lease, consulte Questões relacionadas à eleição de líder.
-
Verifique a configuração do Cilium VTEP nos nós híbridos. Confirme se o recurso
CiliumVTEPConfigexiste e contém o IP do nó líder:kubectl get ciliumvtepconfig hybrid-gateway -o yamlO
spec.endpoints[0].tunnelEndpointdeve corresponder ao endereço IP do nó do gateway líder. Se o recurso estiver ausente ou com um IP desatualizado, o gateway pode não ter concluído a configuração do líder. -
Verifique a verificação de origem e de destino. Confirme se a verificação de origem e de destino está desabilitada nas instâncias do EC2 do gateway:
aws ec2 describe-instance-attribute \ --instance-idGATEWAY_INSTANCE_ID\ --attribute sourceDestCheckSe
sourceDestCheckfortrue, desabilite-o. Consulte Comece a usar o gateway do EKS Hybrid Nodes.
Chamadas de webhook para nós híbridos falham
O servidor da API do Kubernetes não consegue acessar endpoints de webhook em execução nos nós híbridos. As solicitações de admissão de webhook expiram ou retornam erros de conexão.
Causas possíveis:
-
O gateway não está roteando o tráfego do ambiente de gerenciamento para os pods híbridos.
-
O recurso
CiliumVTEPConfigestá ausente ou tem um IP de endpoint desatualizado.
Etapas de diagnóstico:
-
Verifique se o ambiente de gerenciamento consegue acessar o IP do nó do gateway. O ambiente de gerenciamento envia tráfego para a tabela de rotas da VPC, que o encaminha para a ENI do gateway. Confirme se as entradas da tabela de rotas da VPC estão corretas seguindo as etapas apresentadas em Pods em nós híbridos inacessíveis por meio da VPC.
-
Verifique o recurso CiliumVTEPConfig. Confirme se o recurso existe e se o
tunnelEndpointcorresponde ao IP do nó do líder atual:kubectl get ciliumvtepconfig hybrid-gateway -o yamlSe o endpoint do túnel estiver desatualizado (direcionar para um líder anterior), o gateway pode não ter concluído a sequência de configuração do líder. Verifique os logs do gateway em busca de erros durante a atualização ou inserção do
CiliumVTEPConfig.
Falhas nas atualizações da tabela de rotas da VPC
Os logs do gateway apresentam erros relacionados às operações da tabela de rotas da VPC, e as rotas para os CIDRs de pods híbridos não são criadas ou atualizadas.
Causas possíveis:
-
O perfil do IAM do gateway não tem as permissões do EC2 necessárias.
-
Os IDs da tabela de rotas na configuração estão incorretos ou as tabelas de rotas não existem.
-
O gateway não consegue acessar o endpoint da API do EC2.
Etapas de diagnóstico:
-
Verifique as permissões do IAM. O gateway requer as seguintes ações do IAM:
-
ec2:DescribeRouteTables -
ec2:CreateRoute -
ec2:ReplaceRoute -
ec2:DescribeInstancesVerifique o perfil do IAM associado ao perfil de instância do nó do gateway ou à configuração de identidade de pods.
-
-
Verifique os IDs da tabela de rotas na configuração. Confirme se a variável de ambiente
ROUTE_TABLE_IDScontém IDs de tabela de rotas válidos na implantação do gateway:kubectl get deployment eks-hybrid-nodes-gateway -n eks-hybrid-nodes-gateway -o jsonpath='{.spec.template.spec.containers[0].env}' | jq .Confirme se os IDs da tabela de rotas existem na VPC:
aws ec2 describe-route-tables --route-table-idsROUTE_TABLE_ID -
Verifique os logs do gateway em busca de erros na tabela de rotas. Procure mensagens de erro relacionadas às operações da tabela de rotas:
kubectl logs -n eks-hybrid-nodes-gatewayLEADER_POD| grep -i "route table"As mensagens de erro mais comuns incluem:
-
Failed to verify route table access: o gateway não consegue descrever a tabela de rotas. Verifique as permissões do IAM e os IDs da tabela de rotas. -
Failed to update route tables: o gateway não consegue criar ou substituir rotas. Verifique as permissões do IAM. -
failed to access route table: o ID da tabela de rotas pode estar incorreto ou o perfil do IAM não tem a permissãoec2:DescribeRouteTables.
-
Pods do gateway falham ao iniciar ou não estão íntegros
Os pods do gateway estão no estado CrashLoopBackOff, Error ou Pending, ou o endpoint de integridade retorna um erro.
Causas possíveis:
-
As variáveis de ambiente necessárias (
VPC_CIDR,POD_CIDRSeROUTE_TABLE_IDS) não estão definidas. -
O encaminhamento de IP não está habilitado no nó do gateway.
-
As restrições de rótulo de nó ou de antiafinidade impedem o agendamento.
Etapas de diagnóstico:
-
Verifique os logs do pod. Visualize os logs do pod com falha para identificar o erro:
kubectl logs -n eks-hybrid-nodes-gatewayLEADER_POD -
Verifique as variáveis de ambiente necessárias. O gateway requer
NODE_IP,VPC_CIDRePOD_CIDRS. Se alguma estiver ausente, o gateway é encerrado imediatamente. Verifique a especificação do pod:kubectl get pod -n eks-hybrid-nodes-gatewayLEADER_POD-o jsonpath='{.spec.containers[0].env}' | jq .-
NODE_IPé definido automaticamente usandostatus.hostIPna especificação do pod. Se estiver vazio, é possível que o pod ainda não tenha sido agendado em um nó. -
VPC_CIDRePOD_CIDRSsão provenientes dos valores do Helm. Verifique se esses valores estão configurados corretamente.
-
-
Verifique o encaminhamento de IP. O gateway verifica se o encaminhamento de IP está habilitado na inicialização e é encerrado caso contrário. Procure a mensagem de erro
IP forwarding is not enablednos logs do pod. Habilite o encaminhamento de IP no nó:# Check current setting cat /proc/sys/net/ipv4/ip_forward # Enable if not set sudo sysctl -w net.ipv4.ip_forward=1Para uma configuração persistente, configure o encaminhamento de IP por meio do kubelet ou adicione
net.ipv4.ip_forward=1ao/etc/sysctl.d/. -
Verifique o rótulo do nó e as restrições de agendamento. Os pods do gateway requerem nós com o rótulo
hybrid-gateway-node=true. A antiafinidade de pod garante que cada pod seja executado em um nó separado. Caso os pods estejam no estadoPending, verifique se há problemas de agendamento:kubectl describe pod -n eks-hybrid-nodes-gatewayLEADER_PODProcure eventos que indiquem nós insuficientes, rótulos ausentes ou conflitos de antiafinidade.
Questões relacionadas à eleição de líder
Os pods do gateway estão em execução, mas nenhum pod adquire o lease de líder, ou as transições de liderança ocorrem com frequência.
Causas possíveis:
-
As permissões do RBAC para objetos Lease estão ausentes.
-
A conectividade de rede entre os pods do gateway e o servidor de API do Kubernetes é instável.
-
Os parâmetros de eleição de líder estão configurados incorretamente.
Etapas de diagnóstico:
-
Verifique o objeto Lease. Confirme se o Lease existe e inspecione seu detentor atual:
kubectl get lease -n eks-hybrid-nodes-gateway hybrid-gateway-leader -o yamlO campo
spec.holderIdentityapresenta o líder atual. O campospec.renewTime, por sua vez, indica quando o lease foi renovado pela última vez. CasorenewTimeesteja desatualizado, é possível que o líder tenha perdido a conectividade com o servidor de API. -
Verifique as permissões do RBAC. A conta de serviço do gateway precisa de permissões para obter, criar e atualizar objetos Lease no namespace do gateway. Verifique o Role e o RoleBinding:
kubectl get role -n eks-hybrid-nodes-gateway kubectl get rolebinding -n eks-hybrid-nodes-gatewayO Role deve incluir os verbos
get,createeupdatepara o recursoleasesno grupo de APIcoordination.k8s.io. -
Verifique os logs do pod em busca de erros de lease. Procure erros de eleição de líder nos logs do pod:
kubectl logs -n eks-hybrid-nodes-gatewayLEADER_POD| grep -i "leader\|lease"Os problemas comuns incluem:
-
Failed to acquire lease: o pod não consegue criar ou atualizar o objeto Lease. Verifique as permissões do RBAC. -
Mensagens frequentes de
Leadership endedseguidas deLeader setup complete: o líder está perdendo e readquirindo o lease. Isso pode indicar instabilidade de rede entre o pod e o servidor de API. Considere aumentar--leader-election-lease-duration.
-
-
Verifique os parâmetros de eleição de líder. Confirme os valores configurados:
kubectl get deployment eks-hybrid-nodes-gateway -n eks-hybrid-nodes-gateway -o jsonpath='{.spec.template.spec.containers[0].args}'Certifique-se de que
--leader-election-renew-deadlineseja menor do que--leader-election-lease-duration. Caso o prazo de renovação ultrapasse a duração do lease, o líder perderá o lease antes de conseguir renová-lo. Para obter mais informações, consulte Ajuste de eleição de líder.
Mensagens de erro comuns
A tabela a seguir lista as mensagens de erro que podem aparecer nos logs do pod do gateway e como resolvê-las.
| A mensagem de erro | Causa | Resolução |
|---|---|---|
|
|
O parâmetro de kernel |
Habilite o encaminhamento de IP por meio da configuração do kubelet ou executando |
|
|
O gateway não consegue criar a interface de rede VXLAN. Isso ocorre normalmente quando o pod não tem a capacidade |
Verifique se a especificação de Deployment inclui |
|
|
O gateway não consegue descrever uma ou mais tabelas de rotas da VPC na inicialização. |
Verifique se o perfil do IAM tem a permissão |
|
|
O gateway não consegue criar ou substituir rotas nas tabelas de rotas da VPC. |
Verifique se o perfil do IAM tem as permissões |
|
|
O gateway não consegue inicializar o cliente do AWS EC2 ou recuperar a ENI primária da instância. |
Verifique se o perfil do IAM tem a permissão |
|
|
A variável de ambiente |
Verifique se a especificação do pod define |
|
|
O valor fornecido para |
Verifique o valor da variável de ambiente |
|
|
A variável de ambiente |
Defina os valores do Helm |
|
|
O valor de |
Verifique o valor do Helm |
|
|
O gateway não consegue recuperar a região da AWS usando os metadados da instância do EC2. |
Verifique se o serviço de metadados de instância (IMDS) está acessível. Como alternativa, defina explicitamente o sinalizador |
|
|
O gateway não consegue recuperar o ID da instância usando os metadados da instância do EC2. |
Verifique se o serviço de metadados de instância (IMDS) está acessível. Como alternativa, defina explicitamente o sinalizador |
|
|
O objeto |
Verifique se o nó híbrido está registrado corretamente e se o agente do Cilium está em execução. Verifique o recurso |
|
|
O objeto |
Verifique se o IPAM do Cilium está configurado corretamente no nó híbrido. Verifique o recurso |
|
|
O gateway não consegue criar ou atualizar o recurso personalizado |
Verifique se o CRD está instalado no cluster e se a conta de serviço do gateway tem permissões para gerenciar recursos |
|
|
O gerenciador do controller-runtime falhou ao inicializar. |
Verifique os logs do pod para obter contexto adicional. As causas mais comuns incluem kubeconfig inválido ou impossibilidade de acessar o servidor de API do Kubernetes. |
|
|
O executável eleito como líder não pôde ser registrado no gerenciador de controladores. |
Normalmente, trata-se de um erro interno. Verifique os logs completos do pod para obter contexto adicional e relate o problema no repositório do GitHub |
|
|
O reconciliador do CiliumNode não pôde ser registrado no gerenciador de controladores. |
Verifique os logs do pod para obter contexto adicional. Confirme se o CRD do CiliumNode está instalado no cluster. |
|
|
O gerenciador de controladores foi encerrado inesperadamente. |
Verifique os logs do pod para identificar a causa-raiz. As causas comuns incluem a perda de conectividade com o servidor da API do Kubernetes ou um conflito de portas nos endereços de vinculação das métricas ou da sonda de integridade. |
|
|
O gateway não consegue descrever uma tabela de rotas da VPC específica durante a verificação de inicialização. |
Verifique se o perfil do IAM tem a permissão |
Tópicos relacionados
-
Gateway do Amazon EKS Hybrid Nodes: visão geral da arquitetura do gateway e casos de uso.
-
Comece a usar o gateway do EKS Hybrid Nodes: pré-requisitos e instruções de instalação.
-
Referência de configuração para o gateway do Amazon EKS Hybrid Nodes: referência completa para valores do Helm, sinalizadores da CLI e variáveis de ambiente.
-
Operações de gateway do Amazon EKS Hybrid Nodes: orientações para o monitoramento, o comportamento de failover e a escalabilidade.