Síntoma
Tus pods apigee-ingressgateway
solo muestran 1 de los 2 contenedores en ejecución cuando obtienes la lista de pods.
Por ejemplo, cuando ejecutas el siguiente comando:
kubectl -n apigee get pods -l app=apigee-ingressgateway
Resultado:
NAME READY STATUS RESTARTS AGE apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-shl9r 1/2 Running 0 6m48s apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-vvzsf 1/2 Running 0 123m
Además, si ejecutas el comando describe
en uno de los pods anteriores, se mostrará que la comprobación de disponibilidad falla con el código de estado 503.
Por ejemplo, en la sección Events
de la descripción del pódcast, puede ver el siguiente mensaje:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
Causa posible
Causa | Descripción |
---|---|
El ingreso de Apigee está configurado para escuchar en el puerto 80 | La configuración de entrada de Apigee en el puerto 80 ya no se admite a partir de Apigee Hybrid 1.9. |
Causa: el objeto Ingress de Apigee está configurado para escuchar en el puerto 80
Este problema se debe a que la pasarela de entrada de Apigee está configurada para escuchar en el puerto 80, que ya no se admite a partir de Apigee Hybrid 1.9.
Esto puede ocurrir si has actualizado desde una versión anterior de Apigee Hybrid que permitía el puerto 80 o si hay otro error de configuración que lo haya habilitado.
Diagnóstico
-
Obtén una lista de tus pods
apigee-ingressgateway
.Ejecuta el siguiente comando:
kubectl -n apigee get pods -l app=apigee-ingressgateway
Ejemplo de salida
NAME READY STATUS RESTARTS AGE apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-shl9r 1/2 Running 0 6m48s apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-vvzsf 1/2 Running 0 123m
-
Describe uno de los pods de la lista para comprobar los eventos:
kubectl -n apigee describe pod APIGEE_INGRESSGATEWAY_POD
Donde APIGEE_INGRESSGATEWAY_POD es un pod
apigee-ingressgateway
que aparece en el resultado del comando anterior.Ejemplo:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
-
Obtén los registros del pod APIGEE_INGRESSGATEWAY_POD.
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
Puede que vea una entrada de registro que muestre que no se ha podido enlazar el puerto 80 debido a un error de permiso denegado, seguido de un mensaje que indica que Envoy no está listo.
2025-09-11T06:16:45.457621Z error envoy config external/envoy/source/common/listener_manager/listener_manager_impl.cc:1186 listener '0.0.0.0_80' failed to bind or apply socket options: cannot bind '0.0.0.0:80': Permission denied ... 2025-09-11T06:16:46.365818Z warn Envoy proxy is NOT ready: config received from XDS server, but was rejected: cds updates: 1 successful, 0 rejected; lds updates: 0 successful, 1 rejected
- Revisa la configuración de
apigeeroute
actual para encontrar la que tiene habilitado el puerto 80 (HTTP).-
Obtener una lista de las rutas de Apigee definidas.
kubectl -n apigee get apigeeroute
Ejemplo:
NAME STATE AGE myorg-hyb-dev-grp-000-33620d0 running 2d1h non-sni running 17s
-
Comprueba cada
apigeeroute
para ver dónde se define el puerto 80.Ejecuta el siguiente comando para cada
apigeeroute
que aparezca en el resultado del comando anterior:kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
APIGEE_ROUTE_NAME es el nombre de un
apigeeroute
.Comando de ejemplo:
kubectl -n apigee get apigeeroute non-sni -o yaml
Ejemplo:
ElapiVersion: apigee.cloud.google.com/v1alpha2 kind: ApigeeRoute metadata: name: non-sni namespace: apigee resourceVersion: "240441468" spec: enableNonSniClient: true hostnames: - '*' ports: - number: 443 protocol: HTTPS tls: credentialName: myorg-hyb-dev-grp minProtocolVersion: TLS_AUTO mode: SIMPLE - number: 80 protocol: HTTP selector: app: apigee-ingressgateway status: lastAppliedGeneration: 1 state: running
apigeeroute
no SNI muestra que el puerto 80 está habilitado como parte de esta ruta.
-
Obtener una lista de las rutas de Apigee definidas.
Resolución
Para solucionar este problema, inhabilita el puerto 80 en el archivo apigeeroute
yaml original eliminando las siguientes líneas.
- number: 80 protocol: HTTP
Si no tienes el archivo apigeeroute
yaml original, puedes seguir estos pasos:
- Exporta la configuración actual con el siguiente comando:
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml > APIGEE_ROUTE_FILENAME.yaml
Donde APIGEE_ROUTE_NAME es el
apigeeroute
que se está actualizando para eliminar la configuración del puerto 80.Donde APIGEE_ROUTE_FILENAME es el nombre del archivo de salida que contiene el contenido
apigeeroute
en formato YAML. -
Edita el archivo
apigeeroute
yaml para quitar la configuración del puerto 80.Abre el archivo APIGEE_ROUTE_FILENAME en un editor de texto y elimina las siguientes líneas:
- number: 80 protocol: HTTP
-
Sustituye el archivo
apigeeroute
por el archivo YAML modificado:kubectl -n apigee replace -f APIGEE_ROUTE_FILENAME.yaml
Donde APIGEE_ROUTE_FILENAME es el archivo de salida que contiene la configuración
apigeeroute
actualizada. -
Los pods
apigee-ingressgateway
ahora deberían ejecutarse con 2/2 contenedores. Si no lo hacen, elimina los pods para que se creen otros automáticamente.NAME READY STATUS RESTARTS AGE apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-shl9r 2/2 Running 0 25h apigee-ingressgateway-ext-ingress-myorg-hyb-8f2c412-vvzsf 2/2 Running 0 26h
Debe recoger información de diagnóstico
Si el problema persiste incluso después de seguir las instrucciones anteriores, reúne la siguiente información de diagnóstico y ponte en contacto con el equipo de Asistencia de Google Cloud:- Overrides.yaml
- Resultado de los siguientes comandos:
kubectl -n apigee get pods -l app=apigee-ingressgateway
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
kubectl -n apigee get apigeeroutes
- Ejecuta el siguiente comando para cada una de las rutas indicadas:
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
- También puede ejecutar y proporcionar la información de must-gather de Apigee Hybrid.