Resolva problemas de entrada do GKE


Esta página mostra-lhe como resolver problemas relacionados com a entrada no Google Kubernetes Engine (GKE).

Se precisar de assistência adicional, contacte o apoio ao cliente do Google Cloud.

Anotação incorreta para a classe Ingress

Sintoma

Quando cria um Ingress, pode ver o seguinte erro:

Missing one or more resources. If resource creation takes longer than expected, you might have an invalid configuration.

Potenciais causas

Quando criou o Ingress, pode ter configurado incorretamente a classe Ingress no manifesto.

Resolução

Para especificar uma classe Ingress, tem de usar a anotação kubernetes.io/ingress.class. Não pode especificar um GKE Ingress com spec.ingressClassName.

  • Para implementar um Application Load Balancer interno, use a anotação kubernetes.io/ingress.class: gce-internal.
  • Para implementar um Application Load Balancer externo, use a anotação kubernetes.io/ingress.class: gce.

A anotação do endereço IP estático está incorreta

Sintoma

Quando configura um Ingress externo para usar um endereço IP estático, pode ver o seguinte erro:

Error syncing to GCP: error running load balancer syncing routine: loadbalancer <Name of load balancer> does not exist: the given static IP name <Static IP> doesn't translate to an existing static IP.

Potenciais causas

  • Não criou um endereço IP externo estático antes de implementar o Ingress.
  • Não está a usar a anotação correta para o seu tipo de equilibrador de carga.

Resolução

Se estiver a configurar uma entrada externa:

Se estiver a configurar um Ingress interno:

  • Reserve um endereço IP interno estático regional antes de implementar o Ingress.
  • Use a anotação kubernetes.io/ingress.regional-static-ip-name no seu recurso Ingress.

O endereço IP estático já está a ser usado

Sintoma

Pode ver o seguinte erro quando especifica um endereço IP estático para aprovisionar o seu recurso Ingress interno ou externo:

Error syncing to GCP: error running load balancer syncing
routine: loadbalancer <LB name> does not exist:
googleapi: Error 409: IP_IN_USE_BY_ANOTHER_RESOURCE - IP ''<IP address>'' is already being used by another resource.

Potenciais causas

O endereço IP estático já está a ser usado por outro recurso.

Erro ao desativar o HTTP e usar um certificado gerido pela Google

Sintoma

Se estiver a configurar um certificado SSL gerido pela Google e a desativar o tráfego HTTP no seu Ingress, é apresentado o seguinte erro:

Error syncing to GCP: error running load balancer syncing
routine: loadbalancer <Load Balancer name> does not exist:
googleapi: Error 404: The resource ''projects/<Project>/global/sslPolicies/<Policy name>' was not found, notFound

Potenciais causas

Não pode usar as seguintes anotações em conjunto quando configura o Ingress:

  • networking.gke.io/managed-certificates (para associar o certificado gerido pela Google a um Ingress)
  • kubernetes.io/ingress.allow-http: false (para desativar o tráfego HTTP)

Resolução

Desative o tráfego HTTP apenas depois de o balanceador de carga da aplicação externo estar totalmente programado. Pode atualizar o Ingress e adicionar a anotação kubernetes.io/ingress.allow-http: false ao manifesto.

Falta a sub-rede só de proxy para um Ingress interno

Sintoma

Quando implementa um Ingress para um Application Load Balancer interno, pode ver o seguinte erro:

Error syncing to GCP: error running load balancer syncing routine:
loadbalancer <LB name> does not exist: googleapi: Error 400: Invalid value for field 'resource.target': 'https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/<Region>/targetHttpsProxies/<Target proxy>'.
An active proxy-only subnetwork is required in the same region and VPC as
the forwarding rule.

Potenciais causas

Não criou uma sub-rede apenas de proxy antes de criar o recurso Ingress. É necessária uma sub-rede apenas de proxy para equilibradores de carga de aplicações internos.

Resolução

Crie uma sub-rede apenas de proxy antes de implementar o Ingress interno.

A chave do certificado SSL é demasiado grande

Sintoma

Se o tamanho da chave do certificado SSL do balanceador de carga for demasiado grande, pode ver o seguinte erro:

Error syncing to GCP: error running load balancer syncing routine: loadbalancer gky76k70-load-test-trillian-api-ingress-fliismmb does not exist: Cert creation failures - k8s2-cr-gky76k70-znz6o1pfu3tfrguy-f9be3a4abbe573f7 Error:googleapi: Error 400: The SSL key is too large., sslCertificateKeyTooLarge

Potenciais causas

Google Cloud tem um limite de 2048 bits para chaves de certificados SSL.

Resolução

Reduza o tamanho da chave do certificado SSL para 2048 bits ou menos.

Erro ao criar um Ingress no nível Standard

Sintoma

Se estiver a implementar um Ingress num projeto com o nível de rede predefinido do projeto definido como Standard, é apresentada a seguinte mensagem de erro:

Error syncing to GCP: error running load balancer syncing routine: load balancer <LB Name> does not exist: googleapi: Error 400: STANDARD network tier (the project''s default network tier) is not supported: STANDARD network tier is not supported for global forwarding rule., badRequest

Resolução

Configure o nível de rede predefinido do projeto como Premium.

O que se segue?