19.6. OpenShift SDN ネットワークプロバイダーへのロールバック
クラスター管理者は、オフライン 移行方法または 制限付きライブ 移行方法のいずれかを使用して、OVN-Kubernetes ネットワークプラグインから OpenShift SDN ネットワークプラグインにロールバックできます。これは、OVN-Kubernetes ネットワークプラグインへの移行が正常に完了した後にのみ実行できます。
- オフライン移行方法を使用して OVN-Kubernetes ネットワークプラグインから OpenShift SDN ネットワークプラグインに移行した場合は、オフライン移行ロールバック方法を使用する必要があります。
- 制限付きライブマイグレーション方式を使用して OVN-Kubernetes ネットワークプラグインから OpenShift SDN ネットワークプラグインに移行した場合は、制限付きライブマイグレーションロールバック方式を使用する必要があります。
OpenShift SDN CNI は、OpenShift Container Platform 4.14 以降非推奨になりました。OpenShift Container Platform 4.15 以降の新規インストールでは、ネットワークプラグインというオプションはなくなりました。今後のリリースでは、OpenShift SDN ネットワークプラグインは削除され、サポートされなくなる予定です。Red Hat は、この機能が削除されるまでバグ修正とサポートを提供しますが、この機能は拡張されなくなります。OpenShift SDN CNI の代わりに、OVN Kubernetes CNI を使用できます。詳細は、OpenShift SDN CNI の削除 を参照してください。
19.6.1. オフライン移行方法を使用した OpenShift SDN ネットワークプラグインへのロールバック
クラスター管理者は、オフライン移行方法を使用して、OpenShift SDN Container Network Interface (CNI) ネットワークプラグインにロールバックできます。移行中は、クラスター内のすべてのノードを手動で再起動する必要があります。オフライン移行方法では、ダウンタイムが発生し、その間はクラスターにアクセスできなくなります。
ロールバックを開始する前に、OpenShift SDN から OVN-Kubernetes ネットワークプラグインへの移行プロセスが成功するまで待つ必要があります。
OpenShift SDN へのロールバックが必要な場合は、以下の表がプロセスを説明します。
| ユーザーが開始する手順 | 移行アクティビティー | 
|---|---|
| MCO を一時停止し、移行が中断されないようにします。 | MCO が停止します。 | 
| 
									 | 
 | 
| 
									 | 
 | 
| クラスターの各ノードを再起動します。 | 
 | 
| クラスターのすべてのノードが再起動した後に MCO を有効にします。 | 
 | 
前提条件
- 
							OpenShift CLI (oc) がインストールされている。
- cluster-admin ロールが割り当てられたユーザーを使用してクラスターにアクセスできる。
- インフラストラクチャーにインストールされたクラスターが OVN-Kubernetes ネットワークプラグインで設定されている。
- etcd データベースの最新のバックアップが利用可能である。
- ノードごとに手動の再起動をトリガーできる。
- クラスターは既知の正常な状態にあり、エラーがない。
手順
- Machine Config Operator (MCO) によって管理されるすべてのマシン設定プールを停止します。 - CLI で次のコマンドを入力して、 - master設定プールを停止します。- oc patch MachineConfigPool master --type='merge' --patch \ '{ "spec": { "paused": true } }'- $ oc patch MachineConfigPool master --type='merge' --patch \ '{ "spec": { "paused": true } }'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- CLI で次のコマンドを入力して、 - workerマシン設定プールを停止します。- oc patch MachineConfigPool worker --type='merge' --patch \ '{ "spec":{ "paused": true } }'- $ oc patch MachineConfigPool worker --type='merge' --patch \ '{ "spec":{ "paused": true } }'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 移行の準備をするには、CLI で次のコマンドを入力して、移行フィールドを - nullに設定します。- oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": null } }'- $ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": null } }'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- CLI で次のコマンドを入力して、 - Network.config.openshift.ioオブジェクトの移行ステータスが空であることを確認します。空のコマンド出力は、オブジェクトが移行操作中ではないことを示しています。- oc get Network.config cluster -o jsonpath='{.status.migration}'- $ oc get Network.config cluster -o jsonpath='{.status.migration}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- CLI で次のコマンドを入力して、 - Network.operator.openshift.ioオブジェクトにパッチを適用し、ネットワークプラグインを OpenShift SDN に戻します。- oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": { "networkType": "OpenShiftSDN" } } }'- $ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": { "networkType": "OpenShiftSDN" } } }'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 重要- Network.operator.openshift.ioオブジェクトでパッチ操作が終了する前に- Network.config.openshift.ioオブジェクトにパッチを適用した場合、Cluster Network Operator (CNO) は degradation 状態になり、CNO が degradation 状態から回復するまでわずかな遅延が発生します。
- CLI で次のコマンドを入力して、 - Network.config.openshift.io clusterオブジェクトのネットワークプラグインの移行ステータスが- OpenShiftSDNであることを確認します。- oc get Network.config cluster -o jsonpath='{.status.migration.networkType}'- $ oc get Network.config cluster -o jsonpath='{.status.migration.networkType}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- CLI で次のコマンドを入力して、 - Network.config.openshift.ioオブジェクトにパッチを適用し、ネットワークプラグインを OpenShift SDN に戻します。- oc patch Network.config.openshift.io cluster --type='merge' \ --patch '{ "spec": { "networkType": "OpenShiftSDN" } }'- $ oc patch Network.config.openshift.io cluster --type='merge' \ --patch '{ "spec": { "networkType": "OpenShiftSDN" } }'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- オプション: いくつかの OVN-Kubernetes 機能の OpenShift SDN 同等機能への自動移行を無効化します。 - Egress IP
- Egress ファイアウォール
- マルチキャスト
 - 前述の OpenShift SDN 機能の設定の自動移行を無効にするには、次のキーを指定します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ここでは、以下のようになります。 - bool: 機能の移行を有効にするかどうかを指定します。デフォルトは- trueです。
- オプション: ネットワークインフラストラクチャーの要件を満たすように OpenShift SDN の以下の設定をカスタマイズできます。 - 最大伝送単位 (MTU)
- VXLAN ポート
 - 前述の設定のいずれかまたは両方をカスタマイズするには、CLI で次のコマンドをカスタマイズして入力します。デフォルト値を変更する必要がない場合は、パッチのキーを省略します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - mtu
- 
										VXLAN オーバーレイネットワークの MTU。この値は通常は自動的に設定されますが、クラスターにあるノードすべてが同じ MTU を使用しない場合、これを最小のノード MTU 値よりも 50小さく設定する必要があります。
- port
- 
										VXLAN オーバーレイネットワークの UDP ポート。値が指定されない場合は、デフォルトは 4789になります。ポートは OVN-Kubernetes で使用される Geneve ポートと同じにすることはできません。Geneve ポートのデフォルト値は6081です。
 - patch コマンドの例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- クラスター内の各ノードを再起動します。次のいずれかの方法で、クラスター内のノードを再起動できます。 - oc rshコマンドでは、次のような bash スクリプトを使用できます。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- sshコマンドでは、次のような bash スクリプトを使用できます。このスクリプトは、パスワードの入力を求めないように sudo が設定されていることを前提としています。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- Multus デーモンセットのロールアウトが完了するまで待機します。次のコマンドを実行して、ロールアウトのステータスを確認します。 - oc -n openshift-multus rollout status daemonset/multus - $ oc -n openshift-multus rollout status daemonset/multus- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Multus Pod の名前の形式は - multus-<xxxxx>です。ここで、- <xxxxx>は文字のランダムなシーケンスになります。Pod が再起動するまでにしばらく時間がかかる可能性があります。- 出力例 - Waiting for daemon set "multus" rollout to finish: 1 out of 6 new pods have been updated... ... Waiting for daemon set "multus" rollout to finish: 5 of 6 updated pods are available... daemon set "multus" successfully rolled out - Waiting for daemon set "multus" rollout to finish: 1 out of 6 new pods have been updated... ... Waiting for daemon set "multus" rollout to finish: 5 of 6 updated pods are available... daemon set "multus" successfully rolled out- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- クラスター内のノードが再起動し、multus Pod がロールアウトされたら、次のコマンドを実行してすべてのマシン設定プールを起動します。 - マスター設定プールを開始します。 - oc patch MachineConfigPool master --type='merge' --patch \ '{ "spec": { "paused": false } }'- $ oc patch MachineConfigPool master --type='merge' --patch \ '{ "spec": { "paused": false } }'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ワーカー設定プールを開始します。 - oc patch MachineConfigPool worker --type='merge' --patch \ '{ "spec": { "paused": false } }'- $ oc patch MachineConfigPool worker --type='merge' --patch \ '{ "spec": { "paused": false } }'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 - MCO が各設定プールのマシンを更新すると、各ノードを再起動します。 - デフォルトで、MCO は一度にプールごとに単一のマシンを更新するため、移行が完了するまでに必要な時間がクラスターのサイズと共に増加します。 
- ホスト上の新規マシン設定のステータスを確認します。 - マシン設定の状態と適用されたマシン設定の名前をリスト表示するには、CLI で以下のコマンドを入力します。 - oc describe node | egrep "hostname|machineconfig" - $ oc describe node | egrep "hostname|machineconfig"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - kubernetes.io/hostname=master-0 machineconfiguration.openshift.io/currentConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b machineconfiguration.openshift.io/desiredConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b machineconfiguration.openshift.io/reason: machineconfiguration.openshift.io/state: Done - kubernetes.io/hostname=master-0 machineconfiguration.openshift.io/currentConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b machineconfiguration.openshift.io/desiredConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b machineconfiguration.openshift.io/reason: machineconfiguration.openshift.io/state: Done- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 以下のステートメントが true であることを確認します。 - 
											machineconfiguration.openshift.io/stateフィールドの値はDoneです。
- 
											machineconfiguration.openshift.io/currentConfigフィールドの値は、machineconfiguration.openshift.io/desiredConfigフィールドの値と等しくなります。
 
- 
											
- マシン設定が正しいことを確認するには、CLI で以下のコマンドを入力します。 - oc get machineconfig <config_name> -o yaml - $ oc get machineconfig <config_name> -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ここで、 - <config_name>は- machineconfiguration.openshift.io/currentConfigフィールドのマシン設定の名前になります。
 
- 移行が正常に完了したことを確認します。 - ネットワークプラグインが OpenShift SDN であることを確認するには、CLI で次のコマンドを入力します。 - status.networkTypeの値は- OpenShiftSDNである必要があります。- oc get Network.config/cluster -o jsonpath='{.status.networkType}{"\n"}'- $ oc get Network.config/cluster -o jsonpath='{.status.networkType}{"\n"}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- クラスターノードが - Ready状態にあることを確認するには、CLI で以下のコマンドを入力します。- oc get nodes - $ oc get nodes- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ノードが - NotReady状態のままになっている場合、マシン設定デーモン Pod のログを調べ、エラーを解決します。- Pod をリスト表示するには、CLI で次のコマンドを入力します。 - oc get pod -n openshift-machine-config-operator - $ oc get pod -n openshift-machine-config-operator- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 設定デーモン Pod の名前は以下の形式になります。 - machine-config-daemon-<seq>- <seq>値は、ランダムな 5 文字の英数字シーケンスになります。
- 前の出力に示されている各マシン設定デーモン Pod の Pod ログを表示するには、CLI で次のコマンドを入力します。 - oc logs <pod> -n openshift-machine-config-operator - $ oc logs <pod> -n openshift-machine-config-operator- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ここで、 - podはマシン設定デーモン Pod の名前になります。
- 直前のコマンドの出力で示されるログ内のエラーを解決します。
 
- Pod がエラー状態ではないことを確認するには、CLI で次のコマンドを入力します。 - oc get pods --all-namespaces -o wide --sort-by='{.spec.nodeName}'- $ oc get pods --all-namespaces -o wide --sort-by='{.spec.nodeName}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ノードの Pod がエラー状態にある場合は、そのノードを再起動します。 
 
- 以下の手順は、移行に成功し、クラスターの状態が正常である場合にのみ実行します。 - Cluster Network Operator 設定オブジェクトから移行設定を削除するには、CLI で次のコマンドを入力します。 - oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": null } }'- $ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "migration": null } }'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- OVN-Kubernetes 設定を削除するには、CLI で次のコマンドを入力します。 - oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "defaultNetwork": { "ovnKubernetesConfig":null } } }'- $ oc patch Network.operator.openshift.io cluster --type='merge' \ --patch '{ "spec": { "defaultNetwork": { "ovnKubernetesConfig":null } } }'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- OVN-Kubernetes ネットワークプロバイダー namespace を削除するには、CLI で次のコマンドを入力します。 - oc delete namespace openshift-ovn-kubernetes - $ oc delete namespace openshift-ovn-kubernetes- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
19.6.2. Ansible Playbook を使用した OpenShift SDN ネットワークプラグインへのロールバック
					クラスター管理者は、network.offline_migration_sdn_to_ovnk Ansible コレクションの playbooks/playbook-rollback.yml を使用して、OVN-Kubernetes プラグインから OpenShift SDN Container Network Interface (CNI)ネットワークプラグインにロールバックできます。
				
前提条件
- 
							python3パッケージ(最小バージョン 3.10)をインストールしている。
- 
							jmespathパッケージおよびjqパッケージをインストールしました。
- Red Hat Hybrid Cloud Console にログインし、Ansible Automation Platform Web コンソールを開いている。
- 
							すべてのクラウドプラットフォーム上のすべてのノードに対してポート 6081上の User Datagram Protocol (UDP) パケットを許可するセキュリティーグループルールを作成している。このタスクを実行しないと、クラスターが Pod のスケジュールに失敗する可能性があります。
手順
- ansible-coreパッケージをインストールします(最小バージョン 2.15)。以下のコマンド例は、Red Hat Enterprise Linux (RHEL)に- ansible-coreパッケージをインストールする方法を示しています。- sudo dnf install -y ansible-core - $ sudo dnf install -y ansible-core- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ansible.cfgファイルを作成し、以下の例のような情報をファイルに追加します。- ansible-galaxyコマンドおよび Playbook が実行されるのと同じディレクトリーにファイルが存在することを確認します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Ansible Automation Platform Web コンソールから、Connect to Hub ページに移動し、次の手順を実行します。 - ページの Offline token セクションで、Load token ボタンをクリックします。
- トークンがロードされたら、Copy to clipboard アイコンをクリックします。
- 
									ansible.cfgファイルを開き、API トークンをtoken=パラメーターに貼り付けます。API トークンは、ansible.cfgファイルで指定されたサーバー URL に対して認証するために必要です。
 
- 以下の - ansible-galaxyコマンドを入力して、- network.offline_migration_sdn_to_ovnkAnsible コレクションをインストールします。- ansible-galaxy collection install network.offline_migration_sdn_to_ovnk - $ ansible-galaxy collection install network.offline_migration_sdn_to_ovnk- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- network.offline_migration_sdn_to_ovnkAnsible コレクションがシステムにインストールされていることを確認します。- ansible-galaxy collection list | grep network.offline_migration_sdn_to_ovnk - $ ansible-galaxy collection list | grep network.offline_migration_sdn_to_ovnk- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - network.offline_migration_sdn_to_ovnk 1.0.2 - network.offline_migration_sdn_to_ovnk 1.0.2- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - network.offline_migration_sdn_to_ovnkAnsible コレクションは、- ~/.ansible/collections/ansible_collections/network/offline_migration_sdn_to_ovnk/のデフォルトパスに保存されます。
- playbooks/playbook-migration.ymlファイルでロールバック機能を設定します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - rollback_disable_auto_migration
- 
										OpenShift SDN CNI プラグインへの OVN-Kubernetes プラグイン機能の自動移行を無効にします。機能の自動移行を無効にする場合は、rollback_egress_ipパラメーター、rollback_egress_firewallパラメーター、およびrollback_multicastパラメーターもfalseに設定する必要があります。機能の自動移行を有効にする必要がある場合は、パラメーターをfalseに設定します。
- rollback_mtu
- 移行プロセス後にクラスターネットワークに特定の最大伝送単位(MTU)を設定するオプションのパラメーター。
- rollback_vxlanPort
- 
										OpenShift SDN CNI プラグインが使用する VXLAN (仮想拡張 LAN)ポートを設定するオプションのパラメーター。このパラメーターのデフォルト値は 4790です。
 
- playbooks/playbook-rollback.ymlファイルを実行するには、以下のコマンドを入力します。- ansible-playbook -v playbooks/playbook-rollback.yml - $ ansible-playbook -v playbooks/playbook-rollback.yml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
19.6.3. 制限付きのライブマイグレーションの方法を使用した OpenShift SDN ネットワークプラグインへのロールバック
クラスター管理者は、クラスターを OpenShift SDN Container Network Interface (CNI) ネットワークプラグインにロールバックできます。この方法による移行中は、ノードは自動的に再起動され、クラスターへのサービスは中断されません。
ロールバックを開始する前に、OpenShift SDN から OVN-Kubernetes ネットワークプラグインへの移行プロセスが成功するまで待つ必要があります。
OpenShift SDN へのロールバックが必要な場合は、以下の表がプロセスを説明します。
| ユーザーが開始する手順 | 移行アクティビティー | 
|---|---|
| 
									 | 
 | 
前提条件
- 
							OpenShift CLI (oc) がインストールされている。
- cluster-admin ロールが割り当てられたユーザーを使用してクラスターにアクセスできる。
- インフラストラクチャーにインストールされたクラスターが OVN-Kubernetes ネットワークプラグインで設定されている。
- etcd データベースの最新のバックアップが利用可能である。
- ノードごとに手動の再起動をトリガーできる。
- クラスターは既知の正常な状態にあり、エラーがない。
手順
- OpenShift SDN へのロールバックを開始するには、次のコマンドを入力します。 - oc patch Network.config.openshift.io cluster --type='merge' --patch '{"metadata":{"annotations":{"network.openshift.io/network-type-migration":""}},"spec":{"networkType":"OpenShiftSDN"}}'- $ oc patch Network.config.openshift.io cluster --type='merge' --patch '{"metadata":{"annotations":{"network.openshift.io/network-type-migration":""}},"spec":{"networkType":"OpenShiftSDN"}}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 移行の進行状況を確認するには、次のコマンドを入力します。 - watch -n1 'oc get network.config/cluster -o json | jq ".status.conditions[]|\"\\(.type) \\(.status) \\(.reason) \\(.message)\"" -r | column --table --table-columns NAME,STATUS,REASON,MESSAGE --table-columns-limit 4; echo; oc get mcp -o wide; echo; oc get node -o "custom-columns=NAME:metadata.name,STATE:metadata.annotations.machineconfiguration\\.openshift\\.io/state,DESIRED:metadata.annotations.machineconfiguration\\.openshift\\.io/desiredConfig,CURRENT:metadata.annotations.machineconfiguration\\.openshift\\.io/currentConfig,REASON:metadata.annotations.machineconfiguration\\.openshift\\.io/reason"' - $ watch -n1 'oc get network.config/cluster -o json | jq ".status.conditions[]|\"\\(.type) \\(.status) \\(.reason) \\(.message)\"" -r | column --table --table-columns NAME,STATUS,REASON,MESSAGE --table-columns-limit 4; echo; oc get mcp -o wide; echo; oc get node -o "custom-columns=NAME:metadata.name,STATE:metadata.annotations.machineconfiguration\\.openshift\\.io/state,DESIRED:metadata.annotations.machineconfiguration\\.openshift\\.io/desiredConfig,CURRENT:metadata.annotations.machineconfiguration\\.openshift\\.io/currentConfig,REASON:metadata.annotations.machineconfiguration\\.openshift\\.io/reason"'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - このコマンドは、次の情報を毎秒出力します。 - 
									network.config.openshift.io/clusterオブジェクトのステータスの条件。移行の進捗を報告します。
- 
									machine-config-Operatorリソースに関するさまざまなノードのステータス。これには、アップグレード中かアップグレード済みか、および現在の設定と必要な設定が含まれます。
 
- 
									
- 以下の手順は、移行に成功し、クラスターの状態が正常である場合にのみ実行します。 - 次のコマンドを入力して、 - network.configカスタムリソースから- network.openshift.io/network-type-migration=アノテーションを削除します。- oc annotate network.config cluster network.openshift.io/network-type-migration- - $ oc annotate network.config cluster network.openshift.io/network-type-migration-- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを入力して、OVN-Kubernetes ネットワークプロバイダーの namespace を削除します。 - oc delete namespace openshift-ovn-kubernetes - $ oc delete namespace openshift-ovn-kubernetes- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow