Sintoma
Os seus pods apigee-ingressgateway
mostram apenas 1 de 2 contentores em execução quando recebe a lista de pods.
Por exemplo, quando executa o seguinte comando:
kubectl -n apigee get pods -l app=apigee-ingressgateway
Saída:
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
Além disso, a execução de um comando describe
num dos pods acima mostra que a sondagem de disponibilidade falha com um código de estado 503.
Por exemplo, na secção Events
da descrição do podcast, pode ver a seguinte mensagem:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
Causa possível
Causa | Descrição |
---|---|
O acesso de entrada do Apigee está configurado para ouvir na porta 80 | A configuração de entrada do Apigee na porta 80 já não é suportada a partir do Apigee Hybrid 1.9. |
Causa: o acesso de entrada do Apigee está configurado para ouvir na porta 80
Este problema é causado pela configuração do gateway de entrada do Apigee para escutar na porta 80, que já não é suportada a partir do Apigee Hybrid 1.9.
Isto pode acontecer se tiver atualizado a partir de uma versão anterior do Apigee Hybrid que permitia a porta 80 ou se existir outra configuração incorreta que a tenha ativado.
Diagnóstico
-
Receba uma lista dos seus
apigee-ingressgateway
pods.Execute o seguinte comando:
kubectl -n apigee get pods -l app=apigee-ingressgateway
Exemplo de saída
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
-
Descreva um dos pods listados para verificar os eventos:
kubectl -n apigee describe pod APIGEE_INGRESSGATEWAY_POD
Em que APIGEE_INGRESSGATEWAY_POD é um pod
apigee-ingressgateway
apresentado na saída do comando anterior.Exemplo de saída:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
-
Obtenha os registos do pod APIGEE_INGRESSGATEWAY_POD.
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
Pode ver uma entrada de registo que mostra que a porta 80 não conseguiu associar devido a um erro de acesso negado, seguido de uma mensagem a indicar que o Envoy não está pronto.
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
- Reveja a configuração
apigeeroute
atual para encontrar a que tem a porta 80 (HTTP) ativada.-
Aceda a uma lista dos trajetos do Apigee definidos.
kubectl -n apigee get apigeeroute
Exemplo de saída:
NAME STATE AGE myorg-hyb-dev-grp-000-33620d0 running 2d1h non-sni running 17s
-
Verifique cada
apigeeroute
para saber onde a porta 80 está definida.Execute o seguinte comando para cada
apigeeroute
indicado no resultado do comando anterior:kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
Onde APIGEE_ROUTE_NAME é o nome de um indivíduo
apigeeroute
.Exemplo de comando:
kubectl -n apigee get apigeeroute non-sni -o yaml
Exemplo de saída:
O non-sniapiVersion: 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
mostra que a porta 80 está ativada como parte desta rota.
-
Aceda a uma lista dos trajetos do Apigee definidos.
Resolução
Para resolver este problema, desative a porta 80 no ficheiro apigeeroute
yaml original removendo as seguintes linhas.
- number: 80 protocol: HTTP
Se não tiver o ficheiro apigeeroute
yaml original, pode seguir os passos seguintes:
- Exporte a configuração atual com o seguinte comando:
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml > APIGEE_ROUTE_FILENAME.yaml
Em que APIGEE_ROUTE_NAME é o
apigeeroute
que está a ser atualizado para remover a configuração da porta 80.Em que APIGEE_ROUTE_FILENAME é o nome do ficheiro de saída que contém o conteúdo yaml
apigeeroute
. -
Edite o ficheiro
apigeeroute
yaml para remover a configuração da porta 80.Abra o ficheiro APIGEE_ROUTE_FILENAME num editor de texto e remova as seguintes linhas:
- number: 80 protocol: HTTP
-
Substitua o ficheiro
apigeeroute
existente pelo ficheiro YAML modificado:kubectl -n apigee replace -f APIGEE_ROUTE_FILENAME.yaml
Em que APIGEE_ROUTE_FILENAME é o ficheiro de saída que contém a configuração
apigeeroute
atualizada. -
Os pods
apigee-ingressgateway
devem agora ser executados com 2/2 contentores. Se não o fizer, elimine os pods para permitir que sejam criados novos automaticamente.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
Tem de recolher informações de diagnóstico
Se o problema persistir mesmo depois de seguir as instruções acima, recolha as seguintes informações de diagnóstico e, em seguida, contacte o apoio ao cliente do Google Cloud:- Overrides.yaml
- Saída dos seguintes comandos:
kubectl -n apigee get pods -l app=apigee-ingressgateway
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
kubectl -n apigee get apigeeroutes
- Para cada uma das rotas indicadas, execute:
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
- Em alternativa, pode executar e fornecer as informações must-gather do Apigee hybrid.