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-ingressgateway
Exemple 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_POD
Où APIGEE_INGRESSGATEWAY_POD est un pod
apigee-ingressgateway
listé 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_POD
Il 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
apigeeroute
pour trouver celle qui a le port 80 (HTTP) activé.-
Obtenez la liste des routes Apigee définies.
kubectl -n apigee get apigeeroute
Exemple de résultat :
NAME STATE AGE myorg-hyb-dev-grp-000-33620d0 running 2d1h non-sni running 17s
-
Vérifiez chaque
apigeeroute
pour voir où le port 80 est défini.Exécutez la commande suivante pour chaque
apigeeroute
listé dans le résultat de la commande précédente :kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
Où APIGEE_ROUTE_NAME est le nom d'un
apigeeroute
individuel.Exemple de commande :
kubectl -n apigee get apigeeroute non-sni -o yaml
Exemple 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: running
apigeeroute
non-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.yaml
Où APIGEE_ROUTE_NAME correspond à la
apigeeroute
mise à 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
apigeeroute
pour 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
apigeeroute
existant par le fichier YAML modifié :kubectl -n apigee replace -f APIGEE_ROUTE_FILENAME.yaml
où APIGEE_ROUTE_FILENAME est le fichier de sortie contenant la configuration
apigeeroute
mise à jour. -
Les pods
apigee-ingressgateway
doivent 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.