アプリ・デプロイメントのデバッグ
仮想プライベートクラウド クラシック・インフラストラクチャー
アプリ・デプロイメントをデバッグするためのオプションを確認し、障害の根本原因を探します。
始める前に、アプリがデプロイされている名前空間に対するライターまたは管理者の IBM Cloud IAM サービス・アクセス役割があることを確認してください。
-
Red Hat OpenShift クラスターにデプロイできるように、必ず アプリの変更が必要になる可能性がある一般的なシナリオ を確認してください。
-
describeコマンドを実行して、サービス・リソースまたはデプロイメント・リソース内の異常を見つけます。oc describe service <service_name> -
クラスターが
Critical状態かどうかを確認します。 クラスターがCritical状態の場合、ファイアウォール・ルールを調べて、マスターがワーカー・ノードと通信できることを検査します。 -
サービスが正しいポートで listen していることを確認します。
- ポッドの名前を取得します。
oc get pods - コンテナーにログインします。
oc exec -it <pod_name> -- /bin/bash - コンテナー内からアプリに対して curl を実行します。 ポートにアクセスできない場合、サービスは正しいポートで listen していないか、またはアプリに問題が生じている可能性があります。 正しいポートでサービスの設定ファイルを更新して再デプロイするか、アプリの潜在的な問題を調査してください。
curl localhost:<port>
- ポッドの名前を取得します。
-
サービスがポッドに正しくリンクされていることを確認します。
- ポッドの名前を取得します。
oc get pods - コンテナーにログインします。
oc exec -it <pod_name> -- /bin/bash - サービスのクラスター IP アドレスとポートに対して curl を実行します。
curl <cluster_IP>:<port> - IP アドレスとポートにアクセスできない場合、サービスのエンドポイントを調べます。
- エンドポイントがリストされない場合は、サービスのセレクターがポッドと一致していません。 例えば、アプリ・デプロイメントのラベルが
app=fooであるのに、サービスのセレクターがrun=fooである可能性があります。 - エンドポイントがリストされている場合は、サービスの宛先ポート・フィールドを調べて、宛先ポートがポッドに使用されているポートと同じであることを確認します。 例えば、アプリがポート 9080 で listen しているのに、サービスがポート 80 で listen している可能性があります。
- エンドポイントがリストされない場合は、サービスのセレクターがポッドと一致していません。 例えば、アプリ・デプロイメントのラベルが
- ポッドの名前を取得します。
-
Ingress サービスの場合、クラスター内からサービスにアクセスできることを検証します。
- ポッドの名前を取得します。
oc get pods - コンテナーにログインします。
oc exec -it <pod_name> -- /bin/bash - Ingress サービス用に指定された URL に対して curl を実行します。 URL にアクセスできない場合、クラスターと外部エンドポイントの間にファイアウォールの問題が生じていないかを調べます。
curl <host_name>.<domain>
- ポッドの名前を取得します。