25.5. OpenShift SDN ネットワークプラグインからの移行
クラスター管理者は、OpenShift SDN ネットワークプラグインから OVN-Kubernetes ネットワークプラグインに移行できます。
オフライン移行方法を使用して、OpenShift SDN ネットワークプラグインから OVN-Kubernetes プラグインに移行できます。オフライン移行方法は、ダウンタイムを含む手動プロセスです。
25.5.1. OVN-Kubernetes ネットワークプラグインへの移行 リンクのコピーリンクがクリップボードにコピーされました!
OVN-Kubernetes ネットワークプラグインへの移行は、クラスターに到達できないダウンタイムを含む手動プロセスです。
OpenShift Container Platform クラスターを移行して OVN-Kubernetes ネットワークプラグインを使用する前に、最新のバグ修正がすべてクラスターに適用されるように、クラスターを最新の z-stream リリースに更新してください。
ロールバック手順が提供されますが、移行は一方向プロセスとなることが意図されています。
OVN-Kubernetes ネットワークプラグインへの移行は、次のプラットフォームでサポートされています。
- ベアメタルハードウェア
- Amazon Web Services (AWS)
- Google Cloud
- IBM Cloud®
- Microsoft Azure
- Red Hat OpenStack Platform (RHOSP)
- Red Hat Virtualization (RHV)
- {vmw-first}
OVN-Kubernetes ネットワークプラグインとの間の移行は、Red Hat OpenShift Dedicated、Azure Red Hat OpenShift (ARO)、Red Hat OpenShift Service on AWS (ROSA) などのマネージド OpenShift クラウドサービスではサポートされていません。
OpenShift SDN ネットワークプラグインから OVN-Kubernetes ネットワークプラグインへの移行は、Nutanix ではサポートされていません。
25.5.1.1. OVN-Kubernetes ネットワークプラグインへの移行についての考慮点 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターに 150 を超えるノードがある場合は、OVN-Kubernetes ネットワークプラグインへの移行について相談するサポートケースを開きます。
ノードに割り当てられたサブネット、および個々の Pod に割り当てられた IP アドレスは、移行時に保持されません。
OVN-Kubernetes ネットワークプラグインは、OpenShift SDN ネットワークプラグインに存在する多くの機能を実装していますが、設定は同じではありません。
クラスターが次の OpenShift SDN ネットワークプラグイン機能のいずれかを使用する場合、OVN-Kubernetes ネットワークプラグインで同じ機能を手動で設定する必要があります。
- namespace の分離
- Egress ルーター Pod
-
クラスターまたは周囲のネットワークが
100.64.0.0/16アドレス範囲の一部を使用している場合、spec.defaultNetwork.ovnKubernetesConfigオブジェクト定義でv4InternalSubnet仕様を指定して、別の未使用の IP 範囲を選択する必要があります。OVN-Kubernetes は、デフォルトで IP 範囲100.64.0.0/16を内部的に使用します。 -
Precision Time Protocol (PTP)を持つ
openshift-sdnクラスターがハードウェアタイムスタンプに UDP (User Datagram Protocol)を使用し、OVN-Kubernetes プラグインに移行する場合、ハードウェアのタイムスタンプは Open vSwitch (OVS)ブリッジなどのプライマリーインターフェイスデバイスに適用できません。そのため、UDP バージョン 4 の設定は、br-exインターフェイスでは機能しません。
以下のセクションでは、OVN-Kubernetes と OpenShift SDN ネットワークプラグインの前述の機能の設定の違いを強調しています。
プライマリーネットワークインターフェイス
OpenShift SDN プラグインを使用すると、NodeNetworkConfigurationPolicy (NNCP) カスタムリソース (CR) をノード上のプライマリーインターフェイスに適用できます。OVN-Kubernetes ネットワークプラグインにはこの機能はありません。
プライマリーインターフェイスに NNCP が適用されている場合は、OVN-Kubernetes ネットワークプラグインに移行する前に NNCP を削除する必要があります。NNCP を削除しても、プライマリーインターフェイスから設定は削除されませんが、OVN-Kubernetes を使用すると、Kubernetes NMState はこの設定を管理できません。代わりに、configure-ovs.sh シェルスクリプトがプライマリーインターフェイスと、このインターフェイスに接続されている設定を管理します。
namespace の分離
OVN-Kubernetes はネットワークポリシーの分離モードのみをサポートします。
マルチテナントモードまたはサブネット分離モードのいずれかで設定されている OpenShift SDN を使用するクラスターの場合でも、OVN-Kubernetes ネットワークプラグインに移行できます。移行操作後、マルチテナント分離モードは削除されるため、Pod とサービスに対して同じプロジェクトレベルの分離を実現するには、ネットワークポリシーを手動で設定する必要があることに注意してください。
Egress IP アドレス
OpenShift SDN は、2 つの異なる Egress IP モードをサポートしています。
- 自動的に割り当てる 方法では、Egress IP アドレス範囲はノードに割り当てられます。
- 手動で割り当てる 方法では、1 つ以上の Egress IP アドレスの一覧がノードに割り当てられます。
移行プロセスでは、自動割り当てモードを使用する Egress IP 設定の移行がサポートされています。
OVN-Kubernetes と OpenShift SDN との間に Egress IP アドレスを設定する際の相違点は、以下の表で説明されています。
| OVN-Kubernetes | OpenShift SDN |
|---|---|
|
|
OVN-Kubernetes で Egress IP アドレスを使用する方法の詳細は、「Egress IP アドレスの設定」を参照してください。
Egress ネットワークポリシー
OVN-Kubernetes と OpenShift SDN との間に Egress ファイアウォールとしても知られる Egress ネットワークポリシーの設定に関する相違点は、以下の表に記載されています。
| OVN-Kubernetes | OpenShift SDN |
|---|---|
|
|
EgressFirewall オブジェクトの名前は default にしか設定できないため、移行後は、OpenShift SDN での名前に関係なく、移行されたすべての EgressNetworkPolicy オブジェクトに default という名前が付けられます。
その後、OpenShift SDN にロールバックすると、以前の名前が失われるため、すべての EgressNetworkPolicy オブジェクトに default という名前が付けられます。
OVN-Kubernetes で Egress ファイアウォールを使用する方法の詳細は、「プロジェクトの Egress ファイアウォールの設定」を参照してください。
Egress ルーター Pod
OVN-Kubernetes は、リダイレクトモードで Egress ルーター Pod をサポートします。OVN-Kubernetes は、HTTP プロキシーモードまたは DNS プロキシーモードでは Egress ルーター Pod をサポートしません。
Cluster Network Operator で Egress ルーターをデプロイする場合、ノードセレクターを指定して、Egress ルーター Pod のホストに使用するノードを制御することはできません。
マルチキャスト
OVN-Kubernetes と OpenShift SDN でマルチキャストトラフィックを有効にする方法の相違点は、以下の表で説明されています。
| OVN-Kubernetes | OpenShift SDN |
|---|---|
|
|
OVN-Kubernetes でのマルチキャストの使用に関する詳細は、「プロジェクトのマルチキャストの有効化」を参照してください。
ネットワークポリシー
OVN-Kubernetes は、networking.k8s.io/v1 API グループで Kubernetes NetworkPolicy API を完全にサポートします。OpenShift SDN から移行する際に、ネットワークポリシーで変更を加える必要はありません。
25.5.1.2. 移行プロセスの仕組み リンクのコピーリンクがクリップボードにコピーされました!
以下の表は、プロセスのユーザーが開始する手順と、移行が応答として実行するアクション間を区分して移行プロセスを要約しています。
| ユーザーが開始する手順 | 移行アクティビティー |
|---|---|
|
|
|
|
|
|
| クラスターの各ノードを再起動します。 |
|
OpenShift SDN へのロールバックが必要な場合は、以下の表がプロセスを説明します。
ロールバックを開始する前に、OpenShift SDN から OVN-Kubernetes ネットワークプラグインへの移行プロセスが成功するまで待つ必要があります。
| ユーザーが開始する手順 | 移行アクティビティー |
|---|---|
| MCO を一時停止し、移行が中断されないようにします。 | MCO が停止します。 |
|
|
|
|
|
|
| クラスターの各ノードを再起動します。 |
|
| クラスターのすべてのノードが再起動した後に MCO を有効にします。 |
|
25.5.1.3. Ansible Playbook を使用した OVN-Kubernetes ネットワークプラグインへの移行 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、Ansible コレクション network.offline_migration_sdn_to_ovnk を使用して、OpenShift SDN Container Network Interface (CNI)ネットワークプラグインからクラスターの OVN-Kubernetes プラグインに移行できます。Ansible コレクションには、次の Playbook が含まれています。
-
playbooks/playbook-migration.yml: 各 Playbook が移行プロセスのステップを表すシーケンスで実行される Playbook が含まれます。 -
playbooks/playbook-rollback.yml: 各 Playbook がロールバックプロセスのステップを表すシーケンスで実行される Playbook が含まれます。
前提条件
-
python3パッケージ(最小バージョン 3.10)をインストールしている。 -
jmespathパッケージおよびjqパッケージをインストールしました。 - Red Hat Hybrid Cloud Console にログインし、Ansible Automation Platform Web コンソールを開いている。
-
すべてのクラウドプラットフォーム上のすべてのノードに対してポート
6081上の User Datagram Protocol (UDP) パケットを許可するセキュリティーグループルールを作成している。このタスクを実行しないと、クラスターが Pod のスケジュールに失敗する可能性があります。 クラスターがホストネットワークで静的ルートまたはルーティングポリシーを使用しているかどうかを確認します。
-
true の場合、後の手順では、
playbooks/playbook-migration.ymlファイルのgatewayConfigセクションで、routingViaHostパラメーターをtrueに設定し、ipForwardingパラメーターをGlobalに設定する必要があります。
-
true の場合、後の手順では、
-
OpenShift-SDN プラグインが 100
.64.0.0/16 およびアドレス範囲を使用する場合は、アドレス範囲にパッチを適用します。詳細については、関連情報 セクションの OVN-Kubernetes アドレス範囲の修正を参照して ください。100.88.0.0/16
手順
ansible-coreパッケージをインストールします(最小バージョン 2.15)。以下のコマンド例は、Red Hat Enterprise Linux (RHEL)にansible-coreパッケージをインストールする方法を示しています。$ sudo dnf install -y ansible-coreansible.cfgファイルを作成し、以下の例のような情報をファイルに追加します。ansible-galaxyコマンドおよび Playbook が実行されるのと同じディレクトリーにファイルが存在することを確認します。$ cat << EOF >> ansible.cfg [galaxy] server_list = automation_hub, validated [galaxy_server.automation_hub] url=https://console.redhat.com/api/automation-hub/content/published/ auth_url=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token token= #[galaxy_server.release_galaxy] #url=https://galaxy.ansible.com/ [galaxy_server.validated] url=https://console.redhat.com/api/automation-hub/content/validated/ auth_url=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token token= EOFAnsible 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_ovnknetwork.offline_migration_sdn_to_ovnkAnsible コレクションがシステムにインストールされていることを確認します。$ ansible-galaxy collection list | grep network.offline_migration_sdn_to_ovnk出力例
network.offline_migration_sdn_to_ovnk 1.0.2network.offline_migration_sdn_to_ovnkAnsible コレクションは、~/.ansible/collections/ansible_collections/network/offline_migration_sdn_to_ovnk/のデフォルトパスに保存されます。playbooks/playbook-migration.ymlファイルで移行機能を設定します。# ... migration_interface_name: eth0 migration_disable_auto_migration: true migration_egress_ip: false migration_egress_firewall: false migration_multicast: false migration_routing_via_host: true migration_ip_forwarding: Global migration_cidr: "10.240.0.0/14" migration_prefix: 23 migration_mtu: 1400 migration_geneve_port: 6081 migration_ipv4_subnet: "100.64.0.0/16" # ...migration_interface_name-
プライマリーインターフェイスで
NodeNetworkConfigurationPolicy(NNCP)リソースを使用する場合は、移行プロセス中に NNCP リソースがプライマリーインターフェイスで削除されるように、migration-playbook.ymlファイルでインターフェイス名を指定します。 migration_disable_auto_migration-
OVN-Kubernetes プラグインへの OpenShift SDN CNI プラグイン機能の自動移行を無効にします。機能の自動移行を無効にする場合は、
migration_egress_ipパラメーター、migration_egress_firewallパラメーター、およびmigration_multicastパラメーターもfalseに設定する必要があります。機能の自動移行を有効にする必要がある場合は、パラメーターをfalseに設定します。 migration_routing_via_host-
ローカルゲートウェイモードを設定するには
trueに設定し、クラスターのノードの共有ゲートウェイモードを設定するにはfalseに設定します。デフォルト値はfalseです。ローカルゲートウェイモードでは、トラフィックはホストネットワークスタックを介してルーティングされます。共有ゲートウェイモードでは、トラフィックはホストネットワークスタック経由でルーティングされません。 migration_ip_forwarding-
ローカルゲートウェイモードを設定している場合は、ノードのホストネットワークが OVN-Kubernetes に関係のないトラフィックのルーターとして機能する必要がある場合は、IP 転送を
Globalに設定します。 migration_cidr-
クラスターの Classless Inter-Domain Routing (CIDR) IP アドレスブロックを指定します。OVN-Kubernetes ネットワークプロバイダーはこのブロックを内部で使用するため、
100.64.0.0/16CIDR ブロックと重複する CIDR ブロックは使用できません。 migration_prefix- クラスター内の各ノードに割り当てられる CIDR ブロックのスライスである prefix 値を指定します。
migration_mtu- 移行プロセス後にクラスターネットワークに特定の最大伝送単位(MTU)を設定するオプションのパラメーター。
migration_geneve_port-
OVN-Kubernetes の Geneve ポートを設定するオプションのパラメーター。デフォルトのポートは
6081です。 migration_ipv4_subnet-
OVN-Kubernetes による内部使用の IPv4 アドレス範囲を設定するオプションのパラメーター。パラメーターのデフォルト値は
100.64.0.0/16 です。
playbooks/playbook-migration.ymlファイルを実行するには、以下のコマンドを入力します。$ ansible-playbook -v playbooks/playbook-migration.yml