トラブルシューティング
一般的な問題のトラブルシューティング
概要
第1章 インストールされているバージョンの確認 リンクのコピーリンクがクリップボードにコピーされました!
トラブルシューティングを開始するには、インストールされている Red Hat build of MicroShift のバージョンを確認します。
1.1. コマンドラインインターフェイスを使用したバージョンの確認 リンクのコピーリンクがクリップボードにコピーされました!
トラブルシューティングを開始するには、MicroShift のバージョンを知っている必要があります。この情報を取得する方法として、CLI を使用する方法があります。
手順
次のコマンドを実行して、バージョン情報を確認します。
microshift version
$ microshift versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Red Hat build of MicroShift Version: 4.14-0.microshift-e6980e25 Base OCP Version: 4.14
Red Hat build of MicroShift Version: 4.14-0.microshift-e6980e25 Base OCP Version: 4.14Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. API を使用した MicroShift バージョンの確認 リンクのコピーリンクがクリップボードにコピーされました!
トラブルシューティングを開始するには、MicroShift のバージョンを知っている必要があります。この情報を取得する方法として、API を使用する方法があります。
手順
OpenShift CLI (
oc) を使用してバージョン番号を取得するには、次のコマンドを実行してkube-public/microshift-version設定マップを表示します。oc get configmap -n kube-public microshift-version -o yaml
$ oc get configmap -n kube-public microshift-version -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第2章 データのバックアップと復元のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
データのバックアップと復元に失敗した場合のトラブルシューティングを行うには、まずデータパス、ストレージ設定、ストレージ容量などの基本事項を確認します。
2.1. データバックアップの失敗 リンクのコピーリンクがクリップボードにコピーされました!
rpm-ostree システムではデータのバックアップが自動的に行われます。rpm-ostree システムを使用せずに手動バックアップを作成しようとした場合、次の理由によりバックアップが失敗する可能性があります。
- システムの起動後、数分間待たずに MicroShift を正常に停止したため。バックアップを正常に実行するには、システムがヘルスチェックとその他のバックグラウンドプロセスを完了する必要があります。
MicroShift がエラーのために実行を停止した場合、データのバックアップを実行することはできません。
- システムが健全な状態であることを確認してください。
- バックアップを試みる前に、健全な状態で停止してください。
- データ用の十分なストレージがない場合、バックアップは失敗します。MicroShift データ用に十分なストレージがあることを確認してください。
- 十分な権限がない場合、バックアップが失敗する可能性があります。バックアップの作成および必要な設定を実行するための正しいユーザー権限があることを確認してください。
2.2. バックアップログ リンクのコピーリンクがクリップボードにコピーされました!
- 手動バックアップ中にログがコンソールに出力されます。
rpm-ostreeシステムの自動バックアップのログは、MicroShift ジャーナルログの一部として自動的に生成されます。次のコマンドを実行してログを確認できます。sudo journalctl -u microshift
$ sudo journalctl -u microshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. データ復元の失敗 リンクのコピーリンクがクリップボードにコピーされました!
データの復元は、ストレージや権限の問題など、さまざまな理由で失敗する可能性があります。データのバージョンが一致しないと、MicroShift の再起動時に障害が発生する可能性があります。
2.3.1. RPM-OSTree ベースのシステムデータ復元の失敗 リンクのコピーリンクがクリップボードにコピーされました!
データの復元は rpm-ostree システムでは自動的に行われますが、次のように失敗する可能性があります。
rpm-ostreeシステムで復元されるバックアップは、現在のデプロイメントまたはロールバックデプロイメントからのバックアップのみです。異常なシステムではバックアップは作成されません。- 対応するデプロイメントがある最新のバックアップのみが保持されます。対応するデプロイメントがない古いバックアップは自動的に削除されます。
- 通常、データが後のバージョンの MicroShift から復元されることはありません。
- 復元するデータが更新パスと同じバージョン管理パターンに従っていることを確認してください。たとえば、復元先の MicroShift のバージョンが、現在使用している MicroShift データのバージョンよりも古いバージョンである場合、復元が失敗する可能性があります。
2.3.2. RPM ベースの手動データ復元の失敗 リンクのコピーリンクがクリップボードにコピーされました!
rpm-ostree ではない RPM システムを使用しており、手動バックアップを復元しようとした場合、次の理由により復元が失敗する可能性があります。
MicroShift がエラーのために実行を停止した場合、データを復元することはできません。
- システムが健全な状態であることを確認してください。
- データの復元を試みる前に、健全な状態で起動してください。
受信するデータ用に十分なストレージ領域が割り当てられていない場合、復元は失敗します。
- 現在のシステムストレージが復元されたデータを受け入れるように設定されていることを確認してください。
後のバージョンの MicroShift からデータを復元しようとしたため。
- 復元するデータが更新パスと同じバージョン管理パターンに従っていることを確認してください。たとえば、復元先の MicroShift のバージョンが、使用しようとしている MicroShift データのバージョンよりも古いバージョンである場合、復元が失敗する可能性があります。
2.4. ストレージ移行の失敗 リンクのコピーリンクがクリップボードにコピーされました!
通常、ストレージ移行の失敗は、ある MicroShift から次の MicroShift へのカスタムリソース (CR) の大幅な変更によって発生します。ストレージ移行が失敗した場合は、通常、バージョン間に解決できない不一致があり、手動での確認が必要になります。
第3章 クラスターのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of MicroShift クラスターのトラブルシューティングを開始するには、まずクラスターのステータスにアクセスします。
3.1. クラスターのステータスの確認 リンクのコピーリンクがクリップボードにコピーされました!
簡単なコマンドを実行することで、MicroShift クラスターのステータスを確認したり、アクティブな Pod を確認したりできます。次の手順では、クラスターのステータスを確認するために使用できる 3 つのコマンドを示します。必要に応じて 1 つ、2 つ、またはすべてのコマンドを実行し、クラスターのトラブルシューティングに必要な情報を取得できます。
手順
次のコマンドを実行すると、クラスターのステータスが返され、システムのステータスを確認できます。
sudo systemctl status microshift
$ sudo systemctl status microshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow MicroShift の起動に失敗した場合、このコマンドは前回の実行時のログを返します。
オプション: 次のコマンドを実行してログを表示できます。
sudo journalctl -u microshift
$ sudo journalctl -u microshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow
systemd ジャーナルサービスのデフォルト設定では、データは揮発性ディレクトリーに保存されます。システムの再起動後もシステムログを保持するには、ログの保持を有効にし、最大ジャーナルデータサイズの制限を設定します。
オプション: MicroShift が実行中の場合は、次のコマンドを入力してアクティブな Pod を表示できます。
oc get pods -A
$ oc get pods -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 etcd のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
etcd のトラブルシューティングを行い、パフォーマンスを向上させるには、サービスのメモリー許容量を設定します。
4.1. etcd サーバーのパラメーターを設定するための memoryLimitMB 値の設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、etcd はシステムの負荷を処理するために必要なだけのメモリーを使用します。一部のメモリー制約のあるシステムでは、etcd が一度に使用できるメモリー量を制限する必要がある場合があります。
手順
/etc/microshift/config.yamlファイルを編集して、memoryLimitMB値を設定します。etcd: memoryLimitMB: 128
etcd: memoryLimitMB: 128Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記MicroShift の
memoryLimitMBの最小許容値は 128 MB です。最小値に近い値は、etcd のパフォーマンスに影響を与える可能性が高くなります。制限が低いほど、etcd がクエリーに応答するまでにかかる時間が長くなります。制限が低すぎる場合、または etcd の使用量が多い場合、クエリーはタイムアウトになります。
検証
/etc/microshift/config.yamlのmemoryLimitMB値を変更した後、次のコマンドを実行して MicroShift を再起動します。sudo systemctl restart microshift
$ sudo systemctl restart microshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、新しい
memoryLimitMB値が使用されていることを確認します。systemctl show --property=MemoryHigh microshift-etcd.scope
$ systemctl show --property=MemoryHigh microshift-etcd.scopeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 更新のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
MicroShift 更新のトラブルシューティングを行うには、次のガイドを使用してください。
MicroShift は、マイナーバージョンから次のマイナーバージョンに順番に更新する必要があります。たとえば、4.14 を 4.15 に更新する必要があります。
5.1. MicroShift の更新のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
場合によっては、MicroShift の更新に失敗することがあります。そのような場合に備えて、障害の種類とそのトラブルシューティング方法を理解しておくと役立ちます。
5.1.1. MicroShift バージョンの更新順序が原因で更新パスを使用できない リンクのコピーリンクがクリップボードにコピーされました!
MicroShift は順番に更新する必要があります。マイナーバージョンを 1 つ飛ばして MicroShift を更新しようとすると失敗します。
-
たとえば、現在のバージョンが
4.14.5で、そのバージョンから4.16.0に更新しようとすると、executable (4.16.0) is too recent compared to existing data (4.14.5): version difference is 2, maximum allowed difference is 1と表示され、MicroShift が起動に失敗します。
この例では、まず 4.14.5 を 4.15 のいずれかのバージョンに更新する必要があります。その後、4.16.0 にアップグレードできます。
5.1.2. バージョンの互換性がなく更新パスを使用できない リンクのコピーリンクがクリップボードにコピーされました!
MicroShift の更新と、Red Hat Enterprise Linux for Edge (RHEL for Edge) または Red Hat Enterprise Linux (RHEL) のバージョンとの間で互換性がない場合、RPM 依存関係エラーが発生します。
次の互換性に関する表を確認してください。
Red Hat Device Edge リリースの互換性に関する表
Red Hat Device Edge の 2 つの製品は、デバイスエッジコンピューティングのための単一のソリューションとして連携して動作します。製品を正しく組み合わせるには、次の表に示すように、それぞれの検証済みリリースを一緒に使用してください。
| RHEL for Edge バージョン | MicroShift バージョン | MicroShift のリリースステータス | MicroShift のサポート対象の更新 |
| 9.2、9.3 | 4.14 | 一般提供 | 4.14.0 → 4.14.z および 4.14 → 4.15 |
| 9.2 | 4.13 | テクノロジープレビュー | なし |
| 8.7 | 4.12 | 開発者プレビュー | なし |
次の更新パスを確認してください。
Red Hat build of MicroShift の更新パス
- RHEL for Edge 9.2 の場合、一般提供バージョン 4.14.0 から 4.14.z
- RHEL 9.2 の場合、一般提供バージョン 4.14.0 から 4.14.z
5.1.3. OSTree 更新の失敗 リンクのコピーリンクがクリップボードにコピーされました!
OSTree システムで更新した場合、Greenboot ヘルスチェックが自動的にログを記録し、システムの健全性に基づいて動作します。Greenboot によるシステムのロールバックにより、障害の発生が判明する場合があります。更新が失敗しても、Greenboot がシステムのロールバックを完了しなかった場合は、後述の「関連情報」セクションにある RHEL for Edge ドキュメントへのリンクを使用してトラブルシューティングを行うことができます。
- Greenboot ログの手動確認
次のコマンドを実行して、Greenboot ログを手動でチェックしてシステムの健全性を確認します。
sudo systemctl restart --no-block greenboot-healthcheck && sudo journalctl -fu greenboot-healthcheck
$ sudo systemctl restart --no-block greenboot-healthcheck && sudo journalctl -fu greenboot-healthcheckCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.4. RPM 手動更新の失敗 リンクのコピーリンクがクリップボードにコピーされました!
非 OSTree システムで RPM を使用して更新した場合、Greenboot によって更新の失敗が判明することがあります。ただし、ヘルスチェックは情報を提供するだけです。RPM 手動更新の失敗をトラブルシューティングする際には、次のステップとして、システムログを確認します。Greenboot と sos report を使用して、MicroShift 更新とホストシステムの両方を確認できます。
5.2. 更新後のジャーナルログの確認 リンクのコピーリンクがクリップボードにコピーされました!
場合によっては、MicroShift の更新に失敗することがあります。そのような場合に備えて、障害の種類とそのトラブルシューティング方法を理解しておくと役立ちます。ジャーナルログは、更新の失敗の診断に役立ちます。
systemd ジャーナルサービスのデフォルト設定では、データは揮発性ディレクトリーに保存されます。システムの再起動後もシステムログを保持するには、ログの保持を有効にし、最大ジャーナルデータサイズの制限を設定します。
手順
次のコマンドを実行して、MicroShift ジャーナルログを確認します。
sudo journalctl -u microshift
$ sudo journalctl -u microshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Greenboot ジャーナルログを確認します。
sudo journalctl -u greenboot-healthcheck
$ sudo journalctl -u greenboot-healthcheckCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、特定のサービスの起動に関するジャーナルログを確認します。
sudo journalctl --boot <boot> -u <service-name>
$ sudo journalctl --boot <boot> -u <service-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 特定のブートの詳しいログを調べるには、次の 2 つのステップを使用します。まずブートをリストし、取得したリストから必要なものを選択します。
次のコマンドを実行して、ジャーナルログに存在するブートをリスト表示します。
sudo journalctl --list-boots
$ sudo journalctl --list-bootsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、必要なブートのジャーナルログを確認します。
sudo journalctl --boot <-my-boot-number>
$ sudo journalctl --boot <-my-boot-number>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. greenboot ヘルスチェックのステータスの確認 リンクのコピーリンクがクリップボードにコピーされました!
システムに変更を加える前、またはトラブルシューティング中に、greenboot ヘルスチェックのステータスを確認します。次のコマンドのいずれかを使用すると、greenboot スクリプトの実行が完了したことを確認できます。
手順
ヘルスチェックステータスのレポートを表示するには、次のコマンドを使用します。
systemctl show --property=SubState --value greenboot-healthcheck.service
$ systemctl show --property=SubState --value greenboot-healthcheck.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
startが出力される場合、greenboot チェックがまだ実行中であることを意味します。 -
exitedが出力される場合、チェックが合格し、greenboot が終了したことを意味します。Greenboot は、システムが正常な状態の場合、green.dディレクトリー内のスクリプトを実行します。 -
failedの出力は、チェックが合格しなかったことを意味します。システムがこの状態にある場合、Greenboot はred.dディレクトリー内のスクリプトを実行し、システムを再起動する可能性があります。
-
サービスの数値終了コードを示すレポートを表示するには、次のコマンドを使用します。
0は成功を、0 以外の値は失敗を意味します。systemctl show --property=ExecMainStatus --value greenboot-healthcheck.service
$ systemctl show --property=ExecMainStatus --value greenboot-healthcheck.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Boot Status is GREEN - Health Check SUCCESSなど、ブートステータスに関するメッセージを表示するレポートを表示するには、次のコマンドを使用します。cat /run/motd.d/boot-status
$ cat /run/motd.d/boot-statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第6章 監査ログの確認 リンクのコピーリンクがクリップボードにコピーされました!
監査ログを使用すると、Pod のセキュリティー違反を特定できます。
6.1. 監査ログによる Pod のセキュリティー違反の特定 リンクのコピーリンクがクリップボードにコピーされました!
サーバー監査ログを表示することで、ワークロード上の Pod セキュリティーアドミッション違反を特定できます。次の手順では、監査ログにアクセスして解析し、ワークロードの Pod セキュリティーアドミッション違反を見つける方法を示します。
前提条件
-
jqがインストールされている。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
ノード名を取得するために、次のコマンドを実行します。
<node_name>=$(oc get node -ojsonpath='{.items[0].metadata.name}')$ <node_name>=$(oc get node -ojsonpath='{.items[0].metadata.name}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 監査ログを表示するために、次のコマンドを実行します。
oc adm node-logs <node_name> --path=kube-apiserver/
$ oc adm node-logs <node_name> --path=kube-apiserver/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 該当する監査ログを解析するために、次のコマンドを入力します。
oc adm node-logs <node_name> --path=kube-apiserver/audit.log \ | jq -r 'select((.annotations["pod-security.kubernetes.io/audit-violations"] != null) and (.objectRef.resource=="pods")) | .objectRef.namespace + " " + .objectRef.name + " " + .objectRef.resource' \ | sort | uniq -c
$ oc adm node-logs <node_name> --path=kube-apiserver/audit.log \ | jq -r 'select((.annotations["pod-security.kubernetes.io/audit-violations"] != null) and (.objectRef.resource=="pods")) | .objectRef.namespace + " " + .objectRef.name + " " + .objectRef.resource' \ | sort | uniq -cCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第7章 応答型の再起動およびセキュリティー証明書 リンクのコピーリンクがクリップボードにコピーされました!
MicroShift はシステム設定の変更に対応し、IP アドレスの変更、クロックの調整、セキュリティー証明書の有効期限などの変更が検出されると再起動します。
7.1. IP アドレスの変更またはクロックの調整 リンクのコピーリンクがクリップボードにコピーされました!
MicroShift は、デバイスの IP アドレスとシステム全体のクロック設定に依存して、ランタイム時に一貫性を保ちます。ただし、これらの設定は、DHCP やネットワークタイムプロトコル (NTP) の更新など、エッジデバイスで変更されることがあります。
このような変更が発生すると、一部の MicroShift コンポーネントが正しく機能しなくなる可能性があります。この状況を軽減するために、MicroShift は IP アドレスとシステム時間を監視し、設定の変更が検出された場合に再起動します。
時計の変更のしきい値は、いずれかの方向で時間の調整が 10 秒以上になった場合に適用されます。ネットワークタイムプロトコル (NTP) サービスによって実行される定期的な時刻調整の誤差が小さいと、再起動が行われません。
7.2. セキュリティー証明書の有効期間 リンクのコピーリンクがクリップボードにコピーされました!
MicroShift 証明書は、次の 2 つの基本グループに分けられます。
- 証明書の有効期間が 1 年間の短期証明書。
- 証明書の有効期間が 10 年間の長期証明書。
ほとんどのサーバーまたはリーフ証明書の有効期限は短くなっています。
有効期間の長い証明書の例は、system:admin user 認証用のクライアント証明書、または kube-apiserver 外部提供証明書の署名者の証明書です。
7.2.1. 証明書のローテーション リンクのコピーリンクがクリップボードにコピーされました!
有効期限が切れている、または有効期限が近づいている証明書は、継続的な MicroShift 操作を確保するためにローテーションする必要があります。MicroShift が何らかの理由で再起動すると、有効期限が近づいている証明書がローテーションされます。まもなく期限切れになるように設定されている証明書、または期限切れになっている証明書は、MicroShift の自動再起動によってローテーションを実行する可能性があります。
ローテーションされた証明書が MicroShift 認証局 (CA) の場合は、すべての署名付き証明書がローテーションされます。カスタム CA を作成した場合は、CA を手動でローテーションするようにしてください。
7.2.1.1. 短期証明書 リンクのコピーリンクがクリップボードにコピーされました!
以下の状況は、短期間の証明書の有効期間中の MicroShift のアクションを説明します。
回転なし:
- 短期証明書が 5 か月経過していると、ローテーションは発生しません。
再起動時のローテーション:
- 短期証明書が 5 ~ 8 か月経過すると、MicroShift の起動または再起動時にローテーションされます。
ローテーションの自動再起動:
- 短期証明書が 8 か月以上経過している場合、MicroShift は自動的に再起動して新しい証明書をローテーションおよび適用できます。
7.2.1.2. 長期証明書 リンクのコピーリンクがクリップボードにコピーされました!
以下の状況は、証明書の長期有効期間中の MicroShift のアクションを示しています。
回転なし:
- 長期証明書が 8.5 年より短いと、ローテーションは発生しません。
再起動時のローテーション:
- 長期証明書が 8.5 ~ 9 年経過すると、MicroShift の起動または再起動時にローテーションされます。
ローテーションの自動再起動:
- 長期証明書が 9 年以上経過している場合、MicroShift は自動的に再起動し、新しい証明書をローテーションおよび適用できる場合があります。