Problème constaté
Lorsque vous obtenez la liste des pods, vos pods apigee-ingressgateway n'affichent qu'un seul conteneur en cours d'exécution sur deux.
Par exemple, lorsque vous exécutez la commande suivante :
kubectl -n apigee get pods -l app=apigee-ingressgateway
Résultat :
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
De plus, l'exécution d'une commande describe sur l'un des pods ci-dessus affichera l'échec de la vérification d'aptitude avec un code d'état 503.
Par exemple, le message suivant peut s'afficher dans la section Events de la description du pod :
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
Cause possible
| Cause | Description |
|---|---|
| L'entrée Apigee est configurée pour écouter sur le port 80 | La configuration de l'entrée Apigee sur le port 80 n'est plus compatible avec Apigee hybrid 1.9. |
Cause : l'entrée Apigee est configurée pour écouter sur le port 80.
Ce problème est dû au fait que la passerelle d'entrée Apigee est configurée pour écouter sur le port 80, qui n'est plus compatible à partir d'Apigee Hybrid 1.9.
Cela peut se produire si vous avez effectué une mise à niveau à partir d'une version antérieure d'Apigee Hybrid qui autorisait le port 80, ou s'il existe une autre erreur de configuration qui l'a activé.
Diagnostic
-
Obtenez la liste de vos pods
apigee-ingressgateway.Exécutez la commande suivante :
kubectl -n apigee get pods -l app=apigee-ingressgatewayExemple de sortie
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
-
Décrivez l'un des pods listés pour vérifier les événements :
kubectl -n apigee describe pod APIGEE_INGRESSGATEWAY_PODOù APIGEE_INGRESSGATEWAY_POD est un pod
apigee-ingressgatewaylisté dans le résultat de la commande précédente.Exemple de résultat :
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
-
Obtenez les journaux du pod APIGEE_INGRESSGATEWAY_POD.
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_PODIl est possible qu'une entrée de journal indique que le port 80 n'a pas pu être lié en raison d'une erreur d'autorisation refusée, suivie d'un message indiquant qu'Envoy n'est pas prêt.
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
- Examinez la configuration actuelle de
apigeeroutepour trouver celle qui a le port 80 (HTTP) activé.-
Obtenez la liste des routes Apigee définies.
kubectl -n apigee get apigeerouteExemple de résultat :
NAME STATE AGE myorg-hyb-dev-grp-000-33620d0 running 2d1h non-sni running 17s
-
Vérifiez chaque
apigeeroutepour voir où le port 80 est défini.Exécutez la commande suivante pour chaque
apigeeroutelisté dans le résultat de la commande précédente :kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yamlOù APIGEE_ROUTE_NAME est le nom d'un
apigeerouteindividuel.Exemple de commande :
kubectl -n apigee get apigeeroute non-sni -o yamlExemple de résultat :
LeapiVersion: 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: runningapigeeroutenon-sni indique que le port 80 est activé dans cette route.
-
Obtenez la liste des routes Apigee définies.
Solution
Pour résoudre ce problème, désactivez le port 80 dans le fichier YAML apigeeroute d'origine en supprimant les lignes suivantes.
- number: 80
protocol: HTTP
Si vous ne disposez pas du fichier YAML apigeeroute d'origine, vous pouvez procéder comme suit :
- Exportez la configuration actuelle à l'aide de la commande suivante :
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml > APIGEE_ROUTE_FILENAME.yamlOù APIGEE_ROUTE_NAME correspond à la
apigeeroutemise à jour pour supprimer la configuration du port 80.Où APIGEE_ROUTE_FILENAME est le nom du fichier de sortie contenant le contenu YAML
apigeeroute. -
Modifiez le fichier YAML
apigeeroutepour supprimer la configuration du port 80.Ouvrez le fichier APIGEE_ROUTE_FILENAME dans un éditeur de texte et supprimez les lignes suivantes :
- number: 80 protocol: HTTP -
Remplacez le fichier
apigeerouteexistant par le fichier YAML modifié :kubectl -n apigee replace -f APIGEE_ROUTE_FILENAME.yamloù APIGEE_ROUTE_FILENAME est le fichier de sortie contenant la configuration
apigeeroutemise à jour. -
Les pods
apigee-ingressgatewaydoivent maintenant s'exécuter avec 2/2 conteneurs. Si ce n'est pas le cas, supprimez les pods pour que de nouveaux soient créés automatiquement.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
Vous devez collecter des informations de diagnostic
Si le problème persiste, même après avoir suivi les instructions ci-dessus, rassemblez les informations de diagnostic suivantes, puis contactez Google Cloud Customer Care :- Overrides.yaml
- Résultats des commandes suivantes :
kubectl -n apigee get pods -l app=apigee-ingressgateway
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
kubectl -n apigee get apigeeroutes
- Pour chacun des itinéraires indiqués, exécutez la commande suivante :
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
- Vous pouvez également exécuter et fournir les informations Must-Gather Apigee Hybrid.