11.3. ビルドのトラブルシューティング
ビルドマネージャーが起動した ビルダー インスタンスは、一時的なものです。これは、タイムアウトまたは失敗時に Red Hat Quay によってシャットダウンされるか、コントロールプレーン (EC2/K8s) によってガベージコレクションされることを意味します。ビルドログを取得するには、ビルドの実行中に取得する必要があります。
11.3.1. DEBUG 設定フラグ
DEBUG
フラグを true
に設定すると、完了または失敗後にビルダーのインスタンスがクリーンアップされるのを防ぐことができます。以下に例を示します。
EXECUTORS: - EXECUTOR: ec2 DEBUG: true ... - EXECUTOR: kubernetes DEBUG: true ...
true
に設定すると、デバッグ機能により、quay-builder
サービスの完了または失敗後にビルドノードがシャットダウンされなくなります。また、ビルドマネージャーが EC2 インスタンスを終了したり、Kubernetes ジョブを削除したりしてインスタンスをクリーンアップすることもなくなります。これにより、ビルダーノードの問題をデバッグできるようになります。
デバッグは実稼働サイクルでは設定しないでください。設定しても、ライフタイムサービスが残ります。そのため、たとえばインスタンスが約 2 時間後にシャットダウンします。これが発生すると、EC2 インスタンスが終了し、Kubernetes ジョブが完了します。
デバッグを有効にすると、終了していないインスタンスとジョブも実行中のワーカーの総数にカウントされるため、ALLOWED_WORKER_COUNT
にも影響します。そのため、ALLOWED_WORKER_COUNT
に達した場合、新しいビルドをスケジュールできるようにするには、既存のビルダーワーカーを手動で削除する必要があります。
DEBUG を設定すると、終了していないインスタンス/ジョブも実行中のワーカーの総数にカウントされるため、ALLOWED_WORKER_COUNT
にも影響します。このため、新しいビルドをスケジュールして、ALLOWED_WORKER_COUNT
に達した場合は、既存のビルダーワーカーを手動で削除する必要があります。
11.3.2. OpenShift Container Platform および Kubernetes ビルドのトラブルシューティング
OpenShift Container Platform Kubernetes ビルドのトラブルシューティングを行うには、次の手順を実行します。
手順
次のコマンドを入力して、ローカルマシンと OpenShift Container Platform クラスターまたは Kubernetes クラスターのいずれかで実行されている Pod の間にポート転送トンネルを作成します。
$ oc port-forward <builder_pod> 9999:2222
指定した SSH 鍵とポートを使用して、リモートホストへの SSH 接続を確立します。次に例を示します。
$ ssh -i /path/to/ssh/key/set/in/ssh_authorized_keys -p 9999 core@localhost
次のコマンドを入力して、
quay-builder
サービスログを取得します。$ systemctl status quay-builder
$ journalctl -f -u quay-builder