Llamadas a la API que fallan con errores de tiempo de espera

Estás viendo la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.

Síntoma

Es posible que observes uno de los siguientes síntomas:

  1. Las aplicaciones cliente obtienen errores de tiempo de espera como respuesta a las llamadas a la API en Apigee Hybrid.
  2. Observas errores como Error from server (invalid) o The Job "apigee-resources-install" is invalid mientras aplicas la configuración (overrides.yaml) al clúster durante la instalación de Apigee Hybrid).

Mensajes de error

Es posible que observes uno de los siguientes errores:

Respuesta de error a las llamadas a la API

Las solicitudes a la API en Apigee Hybrid pueden fallar con el siguiente mensaje de error:

* Connection failed
* connect to 34.84.67.39 port 443 failed: Operation timed out
* Failed to connect to example.apis.com port 443: Operation timed out
* Closing connection 0
curl: (7) Failed to connect to example.apis.com port 443: Operation timed out

Errores observados mientras se aplica la configuración (overrides.yaml) a los clústeres

Puedes observar uno de los siguientes errores mientras aplicas la configuración (archivo overrides.yaml) a los clústeres durante la instalación:

Error #1

apigeectl init -f overrides/overrides.yaml

...
...
Error from server (Invalid): error when applying patch:
to:
Resource: "batch/v1, Resource=jobs", GroupVersionKind: "batch/v1, Kind=Job"
Name: "istio-init-crd-10-1.4.6", Namespace: "istio-system"
to:
Resource: "batch/v1, Resource=jobs", GroupVersionKind: "batch/v1, Kind=Job"
Name: "istio-init-crd-11-1.4.6", Namespace: "istio-system"
to:
Resource: "batch/v1, Resource=jobs", GroupVersionKind: "batch/v1, Kind=Job"
Name: "istio-init-crd-14-1.4.6", Namespace: "istio-system"

Error #2

apigeectl init -f overrides/overrides.yaml

...
...
The Job "apigee-resources-install" is invalid: spec.template: Invalid value:
core.PodTemplateSpec{ObjectMeta:v1.ObjectMeta{Name:"apigee-resources-install",
GenerateName:"", Namespace:"", SelfLink:"", UID:"", ResourceVersion:"",
Generation:0,

Causas posibles

Estos errores pueden ocurrir si el servicio istio-ingressgateway está en estado pending y no puede vincularse a una dirección IP externa como se muestra a continuación:

kubectl get services -n istio-system
NAME                      TYPE         CLUSTER-IP   EXTERNAL-IP  PORT(S)             AGE
istio-ingressgateway      LoadBalancer 10.198.5.104 <pending>    15020:31927/TCP,    12h
                                                                 80:31381/TCP,
                                                                 443:31391/TCP,
                                                                 31400:31401/TCP,
                                                                 15443:32623/TCP

Las posibles causas de que el servicio istio-ingressgateway esté en estado pending pueden ser las siguientes:

Causa Descripción
Trabajos en estado erróneo o pendiente en el espacio de nombres istio-system Los trabajos incomplete/erroneous en el espacio de nombres istio-system pueden ocasionar que el servicio istio-ingressgateway esté en estado pending de forma permanente y no pueda vincularse a una dirección IP externa.
Trabajo de apigee-resources-install en estado erróneo o pendiente en el espacio de nombres apigee-system Los trabajos incomplete en el espacio de nombres apigee-system pueden provocar que el servicio istio- ingressgateway esté en estado pending de forma permanente y no pueda vincularse a una dirección IP externa.
Causa: Rango de direcciones IP incorrecto asignado al balanceador de cargas externo Se puede configurar un rango de direcciones IP incorrecto en el archivo istio-operator.yaml, lo que hace que el servicio istio-ingressgateway pase al estado pending de forma permanente y no pueda vincularse a una dirección IP externa durante la instalación.

Causa: Trabajos en el espacio de nombres istio-system en estado erróneo o pendiente

Diagnóstico

  1. Verifica el estado de los trabajos en el espacio de nombres istio-system mediante el siguiente comando:
    kubectl get jobs -n istio-system
    
  2. El estado de los trabajos debe ser complete. Si los trabajos tienen el estado erroneous/pending, esa es la causa del problema.

Solución

  1. Si alguno de los trabajos tiene el estado pending o erroneous, bórralos mediante el siguiente comando:
    kubectl -n istio-system delete job JOB_NAME_FROM_STEP_1
    
  2. Vuelve a ejecutar la instalación mediante la aplicación del archivo overrides.yaml:
    apigeectl apply -f overrides.yaml
    

Causa: Es posible que el trabajo de apigee-resources-install en el espacio de nombres de apigee-system esté en estado erróneo.

Diagnóstico

  1. Verifica el estado de los trabajos en el espacio de nombres apigee-system mediante el siguiente comando:
    kubectl get jobs -n apigee-system
    
  2. El estado de los trabajos debe ser complete. Si los trabajos tienen el estado erroneous/pending, esa es la causa del problema. El siguiente resultado de muestra indica que el trabajo apigee-resources-install se completó correctamente.
    kubectl get jobs  -n apigee-system
    NAME                       COMPLETIONS   DURATION   AGE
    apigee-resources-install   1/1           23s        16d
    

Solución

  1. Si los trabajos están en estado pending o erroneous, bórralos con el siguiente comando:
    kubectl -n apigee-system delete job JOB_NAME_FROM_STEP_1
    
  2. Vuelve a ejecutar la instalación mediante la aplicación del archivo overrides.yaml:
    apigeectl apply -f overrides.yaml
    

Causa: Rango de direcciones IP incorrecto asignado al balanceador de cargas externo

Diagnóstico

  1. Verifica la dirección IP configurada para el balanceador de cargas en el archivo istio- operator.yaml. Por ejemplo, en el siguiente fragmento, se muestra la ubicación en el archivo istio-operator.yaml donde está configurada la dirección IP:
    -name: istio-ingressgateway
      enabled: true
      k8s:
        service:
          type: LoadBalancer
         loadBalancerIP: 10.195.24.23
    
  2. El servicio istio-ingressgateway se configura como un balanceador de cargas (indicado por tipo) en el archivo istio-operator.yaml. Durante la instalación de ASM, se crea un balanceador de cargas con la dirección IP configurada y se conecta para comunicarse con el servicio istio- ingressgateway. Por lo tanto, la dirección IP configurada debe ser correcta y estar reservada para el balanceador de cargas.
  3. Comunícate con tu equipo de redes y verifica que la dirección IP configurada para loadBalancerIP sea correcta. Si es incorrecta, el servicio del balanceador de cargas no podrá vincularse a la dirección IP. Esto hace que el servicio istio-ingressgateway esté en estado pending de forma permanente.

Solución

  1. Trabaja con tu equipo de redes y configura la dirección IP correcta en el archivo istio- operator.yaml.
  2. Vuelve a ejecutar la instalación de ASM y aplica el archivo overrides.yaml:
    apigeectl apply -f overrides.yaml
    

Se debe recopilar información de diagnóstico

Si el problema persiste incluso después de seguir las instrucciones anteriores, recopila la siguiente información de diagnóstico y, luego, comunícate con Asistencia de Apigee:

  1. El ID del proyecto de Google Cloud
  2. El nombre de la organización de Apigee Hybrid
  3. Nombre del clúster de Kubernetes
  4. Nombre del proyecto de Google Cloud si el clúster de Kubernetes reside en un proyecto de Google Cloud diferente
  5. El archivo overrides.yaml
  6. El archivo Istio-operator .yaml que se usó durante la instalación de ASM.
  7. Recopila los registros de cada pod istio-ingressgateway en el espacio de nombres istio-system:
    kubectl logs NAME_OF_ISTIO_INGRESSGATEWAY_POD -n istio-system > /tmp/NAME_OF_ISTIO_INGRESSGATEWAY_POD.log
    
  8. Recopila la descripción de cada pod en el espacio de nombres istio-system:
    kubectl describe pod NAME_OF_ISTIO_INGRESSGATEWAY_POD -n istio-system > /tmp/NAME_OF_ISTIO_INGRESSGATEWAY_POD.yaml
    
  9. Recopila la lista de servicios en el espacio de nombres istio-system:
    kubectl get svc -n istio-system