O ALB Ingress Controller é um controlador de ingress para clusters Kubernetes que roteia o tráfego externo para service internos. Ao usar um ALB Ingress para acessar um service, o ALB Ingress Controller monitora as alterações nos recursos de endpoint associados ao service. Em seguida, o controlador sincroniza o status dos nós de backend com o grupo de servidores de backend correspondente e aplica essas alterações à instância do Application Load Balancer (ALB). Este tópico descreve como diagnosticar e resolver eventos anômalos que podem ocorrer ao usar um ALB Ingress.
Como funciona
Ao acessar um service por meio de um ALB Ingress, o ALB Ingress Controller monitora as alterações em vários recursos e as sincroniza com a instância do ALB associada. Esse processo pode falhar devido a diversos limites ou erros de configuração. A figura a seguir mostra as relações lógicas entre os diferentes recursos e o processo de sincronização.
Etapa 1: Verificar eventos anômalos
Use o console: No painel de navegação à esquerda, escolha . Selecione o namespace de destino, clique em nome do ingress de destino para abrir a página de detalhes e, em seguida, clique em guia Events.
-
Use o kubectl:
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedBuildModel 2m28s (x10 over 6m43s) ingress listener is not exist in alb, port: 443, protocol: HTTPS Normal Sync 19s (x32 over 11d) ingress Scheduled for sync Normal SuccessfullyReconciled 4s (x20 over 11d) ingress Successfully reconciledSaída esperada:
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedBuildModel 2m28s (x10 over 6m43s) ingress listener is not exist in alb, port: 443, protocol: HTTPS Normal Sync 19s (x32 over 11d) ingress Scheduled for sync Normal SuccessfullyReconciled 4s (x20 over 11d) ingress Successfully reconciled
verifique as informações do evento relacionadas ao ingress na coluna Description ou no campo Message.
Scheduled for sync: indica que o evento foi iniciado.Successfully reconciled: indica que a reconciliação foi concluída.-
Para mensagens
Warning, consulte a Etapa 2 para solucionar o problema.Se não houver eventos anômalos relatados, mas suas alterações não surtirem efeito, consulte What do I do if changes to an ALB Ingress do not take effect but no anomalous events are reported?
Etapa 2: Analisar e resolver eventos anômalos
A tabela a seguir descreve eventos anômalos comuns, suas causas e soluções.
Para evitar eventos anômalos causados pela incompatibilidade de uma versão antiga do componente ALB Ingress Controller com novos recursos, consulte a Release notes e upgrade o componente para a versão de destino antes de iniciar o diagnóstico.
Mensagem | Causa | Solução |
listener is not exist in alb, port: 80, protocol: HTTP | No ALB Ingress Controller v2.11.0 e posterior, os listeners de um ingress são apenas associados, não criados automaticamente. Esse erro ocorre se você usar um listener em um ingress sem antes criá-lo no AlbConfig correspondente. | Para o ALB Ingress Controller v2.11.0 ou posterior, crie o listener necessário para o recurso de ingress no AlbConfig. Para mais informações, consulte Configure an ALB listener by using an AlbConfig. |
listener is not exist in alb, port: 443, protocol: HTTPS | ||
listener not found for (80/HTTP), with ingresses 1 | No ALB Ingress Controller v2.11.0 e posterior, esse erro ocorre ao remover um listener de um AlbConfig que ainda está associado a um ingress. A mensagem de erro mostra o listener ausente e o número de ingresses associados. | Para remover um listener, primeiro remova todos os ingresses associados a ele. Importante Se você removeu um listener por engano, adicione-o novamente. |
none certificate found for host | O TLS está ativado e a descoberta automática de certificados está ativa para um domínio, mas não existe nenhum certificado correspondente para esse domínio no Certificate Management Service. |
|
Secret "XXX" not found | O Ingress referencia um Secret de certificado TLS que não existe no namespace especificado. Isso afeta principalmente a configuração de https. Se o Secret referenciado estiver ausente, o ALB Ingress Controller não poderá concluir a configuração do certificado, e a atualização da configuração do AlbConfig poderá ser bloqueada até que o problema seja resolvido. | Certifique-se de que o Secret do certificado exista no mesmo namespace do Ingress e que seu nome corresponda exatamente ao valor especificado no campo |
The param of Rules.1.RuleConditions.2.PathConfig.Values.1 is illegal | A regra de roteamento contém um parâmetro de caminho inválido. |
|
The param of ServerGroupName is illegal | O nome do grupo de servidores de backend do ALB tem um formato inválido. | Certifique-se de que o nome do grupo de servidores use o formato correto. O controlador gera o nome do grupo de servidores no formato |
The specified resource sgp-vz2fb219vv792flx3u is in use | O grupo de servidores de backend do ALB gerenciado pelo ACK é referenciado por outra instância do ALB. | Faça login no console do SLB (Application Load Balancer). No painel de navegação à esquerda, escolha . Na página Server Group, localize o grupo de servidores de backend de destino e desassocie a instância do ALB conforme necessário. |
Message: Invalid parameter. Check the parameter input. | Esse erro geralmente ocorre ao configurar incorretamente o ID do certificado ao especificar um certificado em um AlbConfig. | Verifique se um ID de recurso ou um ID numérico está sendo usado como ID do certificado. Você deve usar o ID do certificado especificado por CertIdentifier. |
Message: Failed to create SSL Certificate with name default-https-secret-1-b585e6 ({namespace}-{name}-{identity}). Error: The certificate has expired . | O certificado secreto usado pelo ingress expirou. O nome do certificado na mensagem de erro consiste em três partes:
|
Para mais informações sobre a configuração, consulte Configure an HTTPS certificate for encrypted communication. |
failed to createSSLCertificateWithName: XXX ErrorCode: NameRepeat Message: The name is already used. Please enter another name. | O certificado secreto usado pelo ingress expirou. Reutilizar o nome do certificado expirado ao fazer upload de um novo certificado causa um conflito de nome de certificado SSL. | |
invalid server group Cookie: |
| Ao usar o método de reescrita de cookie, configure um valor de cookie. Para mais informações sobre os parâmetros, consulte Implement session persistence by using annotations. |
| ||
The quota of alb_quota_server_added_num is exceeded for resource eni-xxxx, usage 202/200 | A cota | Aumente a cota do grupo de servidores em Quota Center. |
Perguntas frequentes
As alterações do ALB Ingress não surtem efeito
Se o controlador não acionar eventos de reconciliação para o AlbConfig ou falhar ao processar eventos de alteração, a causa pode ser uma vinculação incorreta entre o IngressClass e o AlbConfig. Para mais informações, consulte Use an IngressClass to associate an AlbConfig with an ingress e verifique se o parâmetro spec.parameters no IngressClass aponta para o nome correto do objeto de recurso AlbConfig.
Por que o endpoint externo (Endpoint) de um ALB Ingress está vazio ou o endereço não pode ser obtido, e como resolver?
Se o endpoint externo de um ALB Ingress estiver vazio ou o endereço não puder ser obtido, verifique as causas comuns a seguir e tome a medida correspondente:
IngressClass não especificado: certifique-se de que o recurso Ingress especifique o
ingressClassNamecorreto (por exemplo,alb). Se oingressClassNamenão estiver definido ou o valor não corresponder ao IngressClass gerenciado pelo ALB Ingress Controller, o controlador não processará o Ingress e o endpoint permanecerá vazio.Associação incorreta do AlbConfig: verifique se o IngressClass está associado ao nome correto do AlbConfig e confirme se o status do AlbConfig é normal. Uma associação incorreta ou um AlbConfig em estado anormal impede o provisionamento do ALB. Para mais informações, consulte Use an IngressClass to associate an AlbConfig with an ingress.
ips insuficientes no vSwitch: verifique o número de endereços ip disponíveis nos vSwitches associados ao AlbConfig. Para garantir que os recursos elásticos do ALB sejam totalmente suportados, reserve pelo menos 8 endereços ip em cada vSwitch onde a instância do ALB está implantada. Se os ips disponíveis forem insuficientes, substitua o vSwitch ou expanda o intervalo CIDR do vSwitch.
Zonas de disponibilidade insuficientes: o ALB exige alta disponibilidade e precisa de vSwitches em pelo menos duas zonas de disponibilidade diferentes. Se apenas uma zona de disponibilidade estiver configurada, adicione vSwitches em pelo menos outra zona de disponibilidade.
Opção de instalação do componente: se None foi selecionado durante a instalação do componente, nenhuma instância do ALB ou AlbConfig foi criada automaticamente. Você deve manually create AlbConfig and IngressClass e associate an AlbConfig with an Ingress using IngressClass.