症状
Pod のリストを取得すると、apigee-ingressgateway
Pod で実行されているコンテナが 2 つのうち 1 つしか表示されません。
たとえば、次のコマンドを実行するとします。
kubectl -n apigee get pods -l app=apigee-ingressgateway
出力:
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
また、上記の Pod のいずれかで describe
コマンドを実行すると、503 ステータス コードで Readiness プローブが失敗していることがわかります。
たとえば、Pod の説明の Events
セクションに次のメッセージが表示されることがあります。
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
考えられる原因
原因 | 説明 |
---|---|
Apigee Ingress がポート 80 でリッスンするように構成されている | Apigee Hybrid 1.9 以降、ポート 80 での Apigee Ingress 構成はサポートされなくなりました。 |
原因: Apigee Ingress がポート 80 でリッスンするように構成されている
この問題は、Apigee Ingress ゲートウェイがポート 80 でリッスンするように構成されていることが原因です。Apigee Hybrid 1.9 以降では、ポート 80 はサポートされなくなりました。
これは、ポート 80 を許可する以前のバージョンの Apigee Hybrid からアップグレードした場合や、ポート 80 を有効にする別の構成ミスがある場合に発生する可能性があります。
診断
-
apigee-ingressgateway
Pod のリストを取得します。次のコマンドを実行します。
kubectl -n apigee get pods -l app=apigee-ingressgateway
出力例
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
-
リストされた Pod のいずれかを説明して、イベントを確認します。
kubectl -n apigee describe pod APIGEE_INGRESSGATEWAY_POD
ここで、APIGEE_INGRESSGATEWAY_POD は前のコマンド出力に示されている
apigee-ingressgateway
Pod です。出力例:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Unhealthy 76s (x32903 over 18h) kubelet Readiness probe failed: HTTP probe failed with statuscode: 503
-
APIGEE_INGRESSGATEWAY_POD Pod のログを取得します。
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
権限拒否エラーによりポート 80 のバインドに失敗したことを示すログエントリが表示され、その後に envoy が準備できていないというメッセージが表示されることがあります。
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
- 現在の
apigeeroute
構成を確認して、ポート 80(HTTP)が有効になっている構成を見つけます。-
定義された Apigee ルートのリストを取得します。
kubectl -n apigee get apigeeroute
出力例:
NAME STATE AGE myorg-hyb-dev-grp-000-33620d0 running 2d1h non-sni running 17s
-
各
apigeeroute
で、ポート 80 が定義されている場所を確認します。前のコマンドの出力にリストされている
apigeeroute
ごとに、次のコマンドを実行します。kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
ここで、APIGEE_ROUTE_NAME は個々の
apigeeroute
の名前です。サンプル コマンド:
kubectl -n apigee get apigeeroute non-sni -o yaml
出力例:
非 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
は、このルートの一部としてポート 80 が有効になっていることを示しています。
-
定義された Apigee ルートのリストを取得します。
解決策
この問題を解決するには、次の行を削除して、元の apigeeroute
yaml ファイルでポート 80 を無効にします。
- number: 80 protocol: HTTP
元の apigeeroute
yaml ファイルがない場合は、次の手順を行います。
- 次のコマンドを使用して、現在の構成をエクスポートします。
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml > APIGEE_ROUTE_FILENAME.yaml
ここで、APIGEE_ROUTE_NAME は、ポート 80 の構成を削除するために更新される
apigeeroute
です。ここで、APIGEE_ROUTE_FILENAME は
apigeeroute
yaml コンテンツを含む出力ファイル名です。 -
apigeeroute
yaml ファイルを編集して、ポート 80 の構成を削除します。テキスト エディタで APIGEE_ROUTE_FILENAME ファイルを開き、次の行を削除します。
- number: 80 protocol: HTTP
-
既存の
apigeeroute
を変更した YAML ファイルに置き換えます。kubectl -n apigee replace -f APIGEE_ROUTE_FILENAME.yaml
ここで、APIGEE_ROUTE_FILENAME は更新された
apigeeroute
構成を含む出力ファイルです。 -
apigee-ingressgateway
Pod が 2/2 コンテナで実行されるようになります。そうでない場合は、Pod を削除して、新しい Pod が自動的に作成されるようにします。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
診断情報の収集が必要な場合
上記の手順でも問題が解決しない場合は、次の診断情報を収集して Google Cloud カスタマーケアにご連絡ください。- Overrides.yaml
- 次のコマンドの出力:
kubectl -n apigee get pods -l app=apigee-ingressgateway
kubectl -n apigee logs APIGEE_INGRESSGATEWAY_POD
kubectl -n apigee get apigeeroutes
- 指定されたルートごとに、次のコマンドを実行します。
kubectl -n apigee get apigeeroute APIGEE_ROUTE_NAME -o yaml
- または、Apigee ハイブリッドの Must-Gather 情報を実行して提供することもできます。