Solucionar problemas de Ingress de GKE


En esta página se explica cómo resolver problemas relacionados con Ingress en Google Kubernetes Engine (GKE).

Si necesitas más ayuda, ponte en contacto con el servicio de atención al cliente de Cloud.

Anotación incorrecta de la clase Ingress

Síntoma

Cuando creas un Ingress, puede que veas el siguiente error:

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

Posibles causas

Al crear el Ingress, es posible que hayas configurado incorrectamente la clase de Ingress en el manifiesto.

Resolución

Para especificar una clase Ingress, debes usar la anotación kubernetes.io/ingress.class. No puedes especificar un Ingress de GKE con spec.ingressClassName.

  • Para desplegar un balanceador de carga de aplicación interno, usa la anotación kubernetes.io/ingress.class: gce-internal.
  • Para desplegar un balanceador de carga de aplicación externo, usa la anotación kubernetes.io/ingress.class: gce.

Anotación incorrecta de la dirección IP estática

Síntoma

Cuando configuras un Ingress externo para que use una dirección IP estática, puede que veas el siguiente error:

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.

Posibles causas

  • No has creado una dirección IP externa estática antes de implementar el Ingress.
  • No estás usando la anotación correcta para tu tipo de balanceador de carga.

Resolución

Si vas a configurar un objeto Ingress externo:

Si vas a configurar un objeto Ingress interno:

  • Reserva una dirección IP interna estática regional antes de implementar el Ingress.
  • Usa la anotación kubernetes.io/ingress.regional-static-ip-name en tu recurso Ingress.

La dirección IP estática ya está en uso

Síntoma

Es posible que veas el siguiente error al especificar una dirección IP estática para aprovisionar tu recurso Ingress interno o 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.

Posibles causas

Otro recurso ya está usando la dirección IP estática.

Error al inhabilitar HTTP y usar un certificado gestionado por Google

Síntoma

Si estás configurando un certificado SSL gestionado por Google y deshabilitando el tráfico HTTP en tu Ingress, verás el siguiente error:

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

Posibles causas

No puedes usar las siguientes anotaciones juntas al configurar el Ingress:

  • networking.gke.io/managed-certificates (para asociar el certificado gestionado por Google a un Ingress)
  • kubernetes.io/ingress.allow-http: false (para inhabilitar el tráfico HTTP)

Resolución

Inhabilita el tráfico HTTP solo cuando el balanceador de carga de aplicaciones externo esté totalmente programado. Puedes actualizar el Ingress y añadir la anotación kubernetes.io/ingress.allow-http: false al manifiesto.

Falta la subred de solo proxy para un Ingress interno

Síntoma

Cuando implementas un objeto Ingress para un balanceador de carga de aplicaciones interno, puede que veas el siguiente error:

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.

Posibles causas

No has creado una subred de solo proxy antes de crear el recurso Ingress. Se necesita una subred de solo proxy para los balanceadores de carga de aplicaciones internos.

Resolución

Crea una subred de solo proxy antes de implementar el Ingress interno.

La clave del certificado SSL es demasiado grande

Síntoma

Si el tamaño de la clave del certificado SSL de tu balanceador de carga es demasiado grande, puede que veas el siguiente error:

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

Posibles causas

Google Cloud tiene un límite de 2048 bits para las claves de certificados SSL.

Resolución

Reduce el tamaño de la clave del certificado SSL a 2048 bits o menos.

Error al crear un Ingress en el nivel Estándar

Síntoma

Si despliega un Ingress en un proyecto con el nivel de red predeterminado del proyecto definido como Estándar, aparecerá el siguiente mensaje de error:

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

Resolución

Configure el nivel de red predeterminado del proyecto como Premium.

Siguientes pasos