11.4. 障害が発生したノードを削除して仮想マシンのフェイルオーバーをトリガーする
ノードに障害が発生し、マシンヘルスチェック がクラスターにデプロイされていない場合、runStrategy: Always
が設定された仮想マシンは正常なノードに自動的に再配置されません。仮想マシンのフェイルオーバーをトリガーするには、Node
オブジェクトを手動で削除する必要があります。
installer-provisioned infrastructure を使用してクラスターをインストールし、マシンのヘルスチェックを適切に設定した場合、次のイベントが発生します。
- 障害が発生したノードは自動的に再利用されます。
-
runStrategy
がAlways
またはRerunOnFailure
に設定された仮想マシンは正常なノードで自動的にスケジュールされます。
11.4.1. 前提条件
-
仮想マシンが実行されていたノードに
NotReady
状態 が設定されている。 -
障害のあるノードで実行されていた仮想マシンでは、
runStrategy
がAlways
に設定されている。 -
OpenShift CLI (
oc
) がインストールされている。
11.4.2. ベアメタルクラスターからのノードの削除
CLI を使用してノードを削除する場合、ノードオブジェクトは Kubernetes で削除されますが、ノード自体にある Pod は削除されません。レプリケーションコントローラーで管理されないベア Pod は、OpenShift Container Platform からはアクセスできなくなります。レプリケーションコントローラーで管理されるベア Pod は、他の利用可能なノードに再スケジュールされます。ローカルのマニフェスト Pod は削除する必要があります。
手順
以下の手順を実行して、ベアメタルで実行されている OpenShift Container Platform クラスターからノードを削除します。
ノードにスケジュール対象外 (unschedulable) のマークを付けます。
$ oc adm cordon <node_name>
ノード上のすべての Pod をドレイン (解放) します。
$ oc adm drain <node_name> --force=true
このステップは、ノードがオフラインまたは応答しない場合に失敗する可能性があります。ノードが応答しない場合でも、共有ストレージに書き込むワークロードを実行している可能性があります。データの破損を防ぐには、続行する前に物理ハードウェアの電源を切ります。
クラスターからノードを削除します。
$ oc delete node <node_name>
ノードオブジェクトはクラスターから削除されていますが、これは再起動後や kubelet サービスが再起動される場合にクラスターに再び参加することができます。ノードとそのすべてのデータを永続的に削除するには、ノードの使用を停止 する必要があります。
- 物理ハードウェアを電源を切っている場合は、ノードがクラスターに再度加わるように、そのハードウェアを再びオンに切り替えます。
11.4.3. 仮想マシンのフェイルオーバーの確認
すべてのリソースが正常でないノードで終了すると、移行した仮想マシンのそれぞれについて、新しい仮想マシンインスタンス (VMI) が正常なノードに自動的に作成されます。VMI が作成されていることを確認するには、oc
CLI を使用してすべての VMI を表示します。
11.4.3.1. CLI を使用した仮想マシンインスタンスのリスト表示
oc
コマンドラインインターフェイス (CLI) を使用して、スタンドアロンおよび仮想マシンによって所有されている VMI を含むすべての仮想マシンのリストを表示できます。
手順
以下のコマンドを実行して、すべての VMI のリストを表示します。
$ oc get vmis -A