13.2.5. 障害が発生したノードを削除して仮想マシンのフェイルオーバーをトリガーする
ノードに障害が発生し、クラスターにマシンの健全性チェックが展開されていない場合、runStrategy: Always が設定されている仮想マシン (VM) は、正常なノードに自動的に移動されません。仮想マシンのフェイルオーバーをトリガーするには、Node オブジェクトを手動で削除する必要があります。以下の手順では、ベアメタル上で稼働している OpenShift Container Platform クラスターからノードを削除します。
前提条件
-
仮想マシンが実行されていたノードが
NotReady状態になっています。 -
障害のあるノードで実行されていた仮想マシンでは、
runStrategyがAlwaysに設定されている。 -
OpenShift CLI (
oc) がインストールされている。
手順
ノードをスケジューリング対象外としてマークします。
$ oc adm cordon <node_name>ノード上のすべての Pod の drain (Pod の退避) を実行します。
$ oc adm drain <node_name> --force=trueこのステップは、ノードがオフラインまたは応答しない場合に失敗する可能性があります。ノードが応答しなくても、共有ストレージに書き込むワークロードが実行されている可能性は依然としてあります。データの破損を防ぐには、続行する前に物理ハードウェアの電源を切ります。
クラスターからノードを削除します。
$ oc delete node <node_name>ノードオブジェクトはクラスターから削除されていますが、これは再起動後や kubelet サービスが再起動される場合にクラスターに再び参加することができます。ノードとそのすべてのデータを完全に削除するには、ノードを廃止する必要があります。
- 物理ハードウェアを電源を切っている場合は、ノードがクラスターに再度加わるように、そのハードウェアを再びオンに切り替えます。
検証
-
すべてのリソースが正常でないノードで終了すると、移行した仮想マシンのそれぞれについて、新しい仮想マシンインスタンス (VMI) が正常なノードに自動的に作成されます。VMI が作成されたことを確認するには、OpenShift CLI (
oc) を使用してすべての VMI を表示します。