type
Post
status
Published
date
Feb 26, 2025
slug
summary
tags
DO285
Redhat
EX280
学習ノート
category
民間資格勉強
icon
password
ガイド付き演習
一般的な問題のトラブルシューティング
この演習では、OpenShift 上でアプリケーションのデプロイが失敗した場合に、問題を特定して修正する方法を学びます。
成果物
OpenShift 上でアプリケーションのデプロイが失敗した場合、その問題を特定し、修正できるようになることが目標です。
開始前の準備
第7章「OpenShift Container Platform のインストール」での全てのラボを完了し、マスターと 2 台のノードが稼働している OpenShift クラスターを用意する必要があります。もしクラスターが正しく構成されていない場合は、以下のコマンドを使用してマスター、ノード1、ノード2 をリセットし、ワークステーションホストで環境が正しく設定されていることを確認します:
その後、ワークステーションのターミナルで以下のコマンドを実行して、マスター、ノード1、ノード2 が起動していることを確認し、このガイド付き演習に必要なファイルをダウンロードします:
1. 新しいプロジェクトを作成する
1.1. ワークステーションホストで、OpenShift マスター(
https://master.lab.example.com)にアクセスし、OpenShift クライアントでログインします。セキュリティ証明書を承認します。1.2. 次に、
common-troubleshoot プロジェクトを作成します:2. Source-to-Image (S2I) アプリケーションをデプロイする
2.1. OpenShift で、
php-helloworld アプリケーションのソースコードを使用して新しいアプリケーションを作成します。ソースコードはサービス VM 上の Git リポジトリにあります。エラーが発生します:
このエラーメッセージは、
php:5.4 に一致する複数のイメージがあることを示しています。次に、正しいイメージストリームタグを確認します。2.2.
php イメージストリームの有効なタグを oc describe コマンドでリストします。出力には、
php:7.0 と php:5.6 が有効なタグであり、php:7.1 と php:5.5 は無効であることが示されています。これは、これらのイメージが利用できないためです。2.3. 正しいイメージストリームタグを使ってアプリケーションをデプロイします:
これで、次のように出力され、ビルドがスケジュールされます:
oc new-app コマンドは正常に成功しました。2.4. アプリケーションが正常にビルドおよびデプロイされたことを確認する
次に、アプリケーションが正常にビルドされ、デプロイされたかを確認します。以下のコマンドを実行して、ポッドの状態を確認します:
出力例:
この場合、
hello-1-build ポッドが Pending 状態で、アプリケーションのポッドが起動していません。この状態の理由を調査し、問題を修正する必要があります。3. ビルダーポッドのログを確認する
ビルダーポッドのログを確認するために、
oc logs コマンドを使用します:しかし、ログに有益な情報は表示されません。このコマンドは何も出力しないため、他の方法で調査を進めます。
4. プロジェクトのイベントログを確認する
プロジェクトのイベントログを確認する方法として、
oc get events コマンドを使用します:出力例:
このイベントログには、
FailedScheduling 警告が表示され、理由として「利用可能なノードが 0/3」であることが示されています。また、oc describe コマンドを使用してさらに詳細な情報を確認できます:出力例:
ここでも
FailedScheduling 警告が表示されており、イベントログからはノードが利用できないことがわかります。5. ノードの状態を調査する
次に、ノードの状態を確認します。
oc get nodes コマンドを実行して、クラスタ内のノードの状態を調査します。このコマンドは、マスターホストで root ユーザーとして実行する必要があります:出力例:
出力から、
node1 と node2 の両方が NotReady 状態であることが確認できます。Kubernetes は NotReady とマークされたノードでポッドをスケジュールできません。注意
もしこのステップで以下のようなエラーが表示された場合:
その場合は、マスターに root ユーザーでログインし、以下のコマンドを実行してから再度
oc get nodes を実行します:6. ノードが Ready 状態でない原因を調査する
ノードが
Ready 状態でない原因を調べます。OpenShift ノードは atomic-openshift-node サービスを実行している必要があります。このサービスは、マスターと通信し、マスターがスケジュールしたポッドを実行します。ワークステーションで 2 つの新しいターミナルを開き、
node1 と node2 に root ユーザーで SSH でログインします:各ノードで
atomic-openshift-node サービスの状態を確認します:出力例:
このエラーメッセージは、ノード上の Docker デーモンに接続できないことを示しています。
7. Docker サービスの状態を確認する
次に、ノード上で
docker サービスの状態を確認します:出力例:
両方のノードで Docker サービスが
inactive 状態であり、起動していないことが確認できます。これが原因で、ノードが NotReady 状態になっています。このように、ノードの状態とサービスを確認することで、問題の原因を特定し、解決に向けて進めることができます。
8. Docker サービスを両方のノードで開始する
まず、
node1 と node2 ノードで Docker サービスを起動します:9. ノードが Ready 状態であることを確認する
ワークステーションホストから、
oc get nodes コマンドを実行して、両方のノードが Ready 状態になったことを確認します:出力例:
注意: ノードが
Ready 状態に変わるまでに数分かかることがあります。10. ポッドが Running 状態であることを確認する
ワークステーション VM から、アプリケーションのポッドが
Running 状態であることを確認します:出力例:
アプリケーションポッドが
Running 状態であることが確認できれば、ビルドとデプロイは成功しています。注意: アプリケーションがビルドおよびデプロイされるまでに時間がかかる場合があるため、コマンドを繰り返し実行して状態を確認します。
追加の情報:ビルドログに関する警告
ビルド中に以下のような警告が表示される場合がありますが、アプリケーションポッドが
Running 状態であれば無視して問題ありません:これらの警告はアプリケーションのビルドが完了したことを示しています。
11. OpenShift 内部レジストリにアプリケーションがビルドされていることを確認
アプリケーションが OpenShift 内部レジストリに正常にビルドされ、プッシュされたことを確認するために、
oc describe is コマンドを実行します:出力例:
この結果から、アプリケーションが OpenShift 内部レジストリに正常にプッシュされていることがわかります。
12. プロジェクトのクリーンアップ
最後に、使用したプロジェクトを削除します:
これで、すべての作業が完了し、プロジェクトがクリーンアップされました。
このガイド付き演習はこれで終了です。
- Author:minami
- URL:https://www.minami.ac.cn/private-license/1a7d7ae8-88e2-8002-9aa8-d592d208faf4
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts





