第4章 バグ修正
このセクションでは、Red Hat OpenShift Container Storage 4.7 で導入された主なバグ修正について説明します。
MON がダウンしても MGR Pod が再起動する
以前のバージョンでは、ノードを再起動すると MGR Pod が Pod の初期状態のままになり、新しい永続ボリューム (PV) を作成できませんでした。今回の更新により、MON がダウンしても MGR Pod が再起動するようになりました。
Huge Page が OpenShift Container Platform で有効になっている場合に Multicloud Object Gateway を使用できるようになりました
以前のバージョンでは、Huge Page が有効になっている場合に Postgres が kubernetes での実行に失敗したため、Multicloud Object Gateway (MCG) db Pod がクラッシュしていました。現在の更新では、MCG Postgres Pod の Huge Page が無効になるため、MCG db Pod がクラッシュしなくなりました。
PodDisruptionBudget
アラートが継続的に表示されなくなる
以前のバージョンでは、OpenShift Container Platform アラートである PodDisruptionBudget
アラートは、オブジェクトストレージデバイス (OSD) について継続的に表示されました。根本的な問題が修正され、アラートが表示されなくなりました。
must-gather
ログ収集の失敗
以前のバージョンでは、コピー Pod は一定間隔でデータの再フラッシュを試行しませんでした。そのため、デフォルトの 10 分のタイムアウト後に must-gather
コマンドが失敗しました。今回の更新により、コピー Pod は must-gather
コマンドで生成される定期的な間隔でデータの収集を試行し続け、must-gather
コマンドが完了するまで実行されるようになりました。
volumesnapshotclass
がない場合に PVC をボリュームスナップショットから PVC を作成できない
PVC は、volumesnapshotclass
がない場合にボリュームスナップショットから作成することはできません。この問題は、ボリュームスナップショットのステータスが volumesnapshotclass
の削除時に not ready 状態に変更されるために生じます。この問題は OCP 4.7.0 以降で修正されています。
プロセスのクラッシュ時に、コアダンプは伝播しない
以前のバージョンでは、プロセスがクラッシュした場合にコアダンプが伝播されませんでした。今回のリリースにより、メインの ceph デーモンの次に実行されるサイドカーの log-collector が導入されました。ここでは ShareProcessNamespace
フラグが有効になり、このフラグを使用すると、シグナルをコンテナー間でインターセプトでき、コアダンプを生成できます。
複数の OSD 削除ジョブが失敗しなくなる
以前のバージョンでは、複数の OSD の削除についてのジョブをトリガーする場合、テンプレートにはジョブ名に含まれる OSD ID と共にコンマが含まれていました。これにより、ジョブテンプレートが失敗しました。今回の更新により、有効な形式を維持するために、OSD ID がジョブ名から削除されました。ジョブ名が ocs-osd-removal-${FAILED_OSD_IDS}
から ocs-osd-removal-job
に変更になりました。
mon
フェイルオーバータイムアウトの増加
今回の更新により、IBM Cloud での mon
のフェイルオーバーのタイムアウトが 15 分に増えました。以前のバージョンでは、mons
は稼働中の場合でもフェイルオーバーを開始していました。
Rook は、以前の OpenShift Container Storage インストールから不完全なディスクを検出すると、メッセージを出して OSD のデプロイを拒否します。
以前のバージョンでは、OpenShift Container Storage の以前のインストールから消去されていないディスクを再利用すると、Rook は突然失敗しました。今回の更新により、Rook はディスクが別のクラスターに属することを検知し、エラーメッセージを出してそのディスクでの OSD のデプロイを拒否するようになりました (BZ#1922954)
mon フェイルオーバーにより Ceph がアクセス不可能になる
以前のバージョンでは、mom が別の mon がフェイルオーバーしている間にダウンした場合、mom のクォーラム (定足数) が失われました。mom がクォーラム (定足数) を失うと Ceph はアクセス不可能なります。今回の更新により、mon がフェイルオーバーしている間に、任意の mon のドレイン (解放) が阻止され、Ceph がアクセス不可能になりました。
cpehcsi
ノードプラグイン Pod が GRPC メトリクスのためにポートを占有する
以前のバージョンでは、cephcsi
Pod はデバッグ目的で GRPC メトリクスを公開するため、cephcsi
ノードプラグイン Pod は RBD にポート 9090 を使用し、CephFS にポート 9091 を使用しました。その結果、cephsi
Pod はポートが利用できないために起動しませんでした。今回のリリースにより、GRPC メトリクスはデバッグの目的でのみ必要とされるためにデフォルトで無効になり、cephcsi
はノードプラグイン Pod が実行されているノードでポート 9091 および 9090 を使用しなくなりました。
rook-ceph-mds
はモニターサーバーに Pod IP を登録しない
以前のバージョンでは、rook-ceph-mds
はモニターサーバーで Pod IP を登録しないため、ファイルシステム上のすべてのマウントがタイムアウトになり、PVC はプロビジョニングできず、CephFS ボリュームのプロビジョニングが失敗しました。今回のリリースにより、ホストネットワークが有効でない場合に引数 --public-addr=podIP
が MDS Pod に追加されるようになりました。したがって、CephFS ボリュームのプロビジョニングは失敗しなくなりました。
ルール評価の失敗による must gather
のエラー
以前のバージョンでは、記録ルールのレコード cluster:ceph_disk_latency:join_ceph_node_disk_irate1m
は、many-to-many 一致が Prometheus で許可されないために評価されませんでした。このルール評価の失敗により、エラーが must gather
とデプロイメントに生じました。今回のリリースにより、記録ルールのクエリーが更新され、many-to-many 一致のシナリオが排除され、これにより Prometheus ルール評価が失敗せず、デプロイメントでエラーが確認されなくなりました。