第12章 Nodes
12.1. ノードのメンテナンス リンクのコピーリンクがクリップボードにコピーされました!
oc adm ユーティリティーまたは NodeMaintenance カスタムリソース (CR) を使用してノードをメンテナンスモードにすることができます。
node-maintenance-operator (NMO) は OpenShift Virtualization に同梱されなくなりました。これは、Red Hat OpenShift Service on AWS Web コンソールのソフトウェアカタログから、または OpenShift CLI (oc) を使用してスタンドアロン Operator としてデプロイされます。
ノードの修復、フェンシング、メンテナンスの詳細は、Red Hat OpenShift のワークロードの可用性 を参照してください。
仮想マシンでは、共有 ReadWriteMany (RWX) アクセスモードを持つ永続ボリューム要求 (PVC) のライブマイグレーションが必要です。
Node Maintenance Operator は、新規または削除された NodeMaintenance CR をモニタリングします。新規の NodeMaintenance CR が検出されると、新規ワークロードはスケジュールされず、ノードは残りのクラスターから遮断されます。退避できるすべての Pod はノードから退避されます。NodeMaintenance CR が削除されると、CR で参照されるノードは新規ワークロードで利用可能になります。
ノードメンテナンスタスクに NodeMaintenance CR を使用すると、標準の Red Hat OpenShift Service on AWS カスタムリソース処理を使用した oc adm cordon および oc adm drain コマンドと同じ結果が得られます。
12.1.1. エビクションストラテジー リンクのコピーリンクがクリップボードにコピーされました!
ノードがメンテナンス状態になると、ノードにはスケジュール対象外のマークが付けられ、ノードからすべての仮想マシンおよび Pod の drain (Pod の退避) が実行されます。
仮想マシン (VM) またはクラスターの退避ストラテジーを設定できます。
- 仮想マシン退避ストラテジー
仮想マシンの
LiveMigrate退避ストラテジーは、ノードがメンテナンス状態になるか、drain (Pod の退避) が実行される場合に仮想マシンインスタンスが中断されないようにします。この退避ストラテジーを持つ VMI は、別のノードにライブマイグレーションされます。Red Hat OpenShift Service on AWS Web コンソールまたは コマンドライン を使用して、仮想マシン (VM) のエビクションストラテジーを設定できます。
重要デフォルトの退避ストラテジーは
LiveMigrateです。移行不可能な仮想マシンがLiveMigrate退避ストラテジーを使用していると、ノードの drain が妨げられたり、インフラストラクチャーのアップグレードがブロックされたりする可能性があります。これは、その仮想マシンがノードから退避されないためです。この状況では、仮想マシンを手動でシャットダウンしない限り、移行はPendingまたはScheduling中の状態のままになります。移行不可能な仮想マシンの退避ストラテジーを、アップグレードをブロックしない
LiveMigrateIfPossibleに設定する必要があります。移行すべきでない仮想マシンの場合は、Noneに設定する必要があります。
- クラスター退避ストラテジー
- ワークロードの継続性またはインフラストラクチャーのアップグレードを優先するために、クラスターの退避ストラテジーを設定できます。
| 退避ストラテジー | 説明 | ワークフローを中断する | アップグレードをブロックする |
|---|---|---|---|
|
| アップグレードよりもワークロードの継続性を優先します。 | いいえ | はい 2 |
|
| ワークロードの継続性よりもアップグレードを優先して、環境が確実に更新されるようにします。 | はい | いいえ |
|
| 退避ストラテジーを使用せずに仮想マシンをシャットダウンします。 | はい | いいえ |
- マルチノードクラスターのデフォルトの退避ストラテジー。
- 仮想マシンがアップグレードをブロックする場合は、仮想マシンを手動でシャットダウンする必要があります。
- シングルノード OpenShift のデフォルトの退避ストラテジー。
12.1.1.1. CLI を使用した仮想マシンの退避ストラテジーの設定 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して、仮想マシン (VM) の退避ストラテジーを設定できます。
デフォルトの退避ストラテジーは LiveMigrate です。移行不可能な仮想マシンが LiveMigrate 退避ストラテジーを使用していると、ノードの drain が妨げられたり、インフラストラクチャーのアップグレードがブロックされたりする可能性があります。これは、その仮想マシンがノードから退避されないためです。この状況では、仮想マシンを手動でシャットダウンしない限り、移行は Pending または Scheduling 中の状態のままになります。
移行不可能な仮想マシンの退避ストラテジーを、アップグレードをブロックしない LiveMigrateIfPossible に設定する必要があります。移行すべきでない仮想マシンの場合は、None に設定する必要があります。
前提条件
-
OpenShift CLI (
oc) がインストールされている。
手順
次のコマンドを実行して、
VirtualMachineリソースを編集します。oc edit vm <vm_name> -n <namespace>
$ oc edit vm <vm_name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 退避ストラテジーの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 退避ストラテジーを指定します。デフォルト値は
LiveMigrateです。
仮想マシンを再起動して変更を適用します。
virtctl restart <vm_name> -n <namespace>
$ virtctl restart <vm_name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.1.1.2. CLI を使用したクラスターの退避ストラテジーの設定 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して、クラスターの退避ストラテジーを設定できます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。
手順
次のコマンドを実行して、
hyperconvergedリソースを編集します。oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnvCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例に示すように、クラスターの退避ストラテジーを設定します。
クラスターの退避ストラテジーの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.1.2. 実行ストラテジー リンクのコピーリンクがクリップボードにコピーされました!
spec.runStrategy キーは、特定の条件下での仮想マシンの動作を決定します。
12.1.2.1. 実行ストラテジー リンクのコピーリンクがクリップボードにコピーされました!
spec.runStrategy キーには 4 つの値があります。
Always- 仮想マシンインスタンス (VMI) は、仮想マシンが別のノードに作成されるときに常に存在します。元の VMI が何らかの理由で停止した場合、新しい VMI が作成されます。
RerunOnFailure- 以前のインスタンスに障害が発生した場合、VMI は別のノードで再作成されます。仮想マシンがシャットダウンされた場合など、仮想マシンが正常に停止した場合、インスタンスは再作成されません。
Manual-
VMI 状態は、virtctl クライアントコマンドの
start、stop、およびrestartを使用して手動で制御します。仮想マシンは自動的には再起動されません。 Halted- 仮想マシンの作成時には VMI は存在しません。
virtctl start、stop、および restart コマンドのさまざまな組み合わせが、実行ストラテジーに影響します。
次の表では、仮想マシンの状態間の遷移を説明します。最初の列には、仮想マシンの初期実行ストラテジーを示します。残りの列には、virtctl コマンドと、そのコマンドを実行した後の新しい実行ストラテジーを示します。
| 初期実行ストラテジー | Start | Stop | Restart |
|---|---|---|---|
| Always | - | Halted | Always |
| RerunOnFailure | RerunOnFailure | RerunOnFailure | RerunOnFailure |
| Manual | Manual | Manual | Manual |
| Halted | Always | - | - |
インストーラーによってプロビジョニングされたインフラストラクチャーを使用してインストールされたクラスター内のノードがマシンの健全性チェックに失敗して使用できない場合は、runStrategy: Always または runStrategy: RerunOnFailure を持つ仮想マシンが新しいノードで再スケジュールされます。
12.1.2.2. CLI を使用した仮想マシン実行ストラテジーの設定 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して、仮想マシン (VM) の実行ストラテジーを設定できます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。
手順
次のコマンドを実行して、
VirtualMachineリソースを編集します。oc edit vm <vm_name> -n <namespace>
$ oc edit vm <vm_name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 実行ストラテジーの例
apiVersion: kubevirt.io/v1 kind: VirtualMachine spec: runStrategy: Always # ...
apiVersion: kubevirt.io/v1 kind: VirtualMachine spec: runStrategy: Always # ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.1.3. ベアメタルノードのメンテナンス リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS をベアメタルインフラストラクチャーにデプロイする場合は、クラウドインフラストラクチャーにデプロイする場合と比べて、考慮すべき追加の事項があります。クラスターノードが一時的とみなされるクラウド環境とは異なり、ベアメタルノードを再プロビジョニングするには、メンテナンスタスクにより多くの時間と作業が必要になります。
致命的なカーネルエラーが発生したり、NIC カードのハードウェア障害が発生する場合などにベアメタルノードに障害が発生した場合には、障害のあるノードが修復または置き換えられている間に、障害が発生したノード上のワークロードをクラスターの別の場所で再起動する必要があります。ノードのメンテナンスモードにより、クラスター管理者はノードの電源をグレースフルに停止し、ワークロードをクラスターの他の部分に移動させ、ワークロードが中断されないようにします。詳細な進捗とノードのステータスの詳細は、メンテナンス時に提供されます。