13.3. OpenShift SDN ネットワークプロバイダーへのロールバック

クラスター管理者は、OVN-Kubernetes デフォルト CNI ネットワークプロバイダーから OpenShift SDN クラスターのデフォルト Container Network Interface (CNI) プロバイダーにロールバックできます (OVN-Kubernetes への移行に失敗した場合)。

13.3.1. デフォルトの CNI ネットワークプロバイダーの OpenShift SDN へのロールバック

クラスター管理者は、クラスターを OpenShift SDN デフォルト Container Network Interface (CNI) ネットワークプロバイダーにロールバックできます。ロールバック時に、クラスター内のすべてのノードを再起動する必要があります。

重要

OVN-Kubernetes への移行に失敗した場合にのみ OpenShift SDN にロールバックします。

前提条件

  • OpenShift CLI (oc) をインストールしている。
  • cluster-admin ロールを持つユーザーとしてのクラスターへのアクセス。
  • OVN-Kubernetes デフォルト CNI ネットワークプロバイダーで設定されたベアメタルインフラストラクチャーにクラスターがインストールされていること。

    1. 移行を有効にするには、以下のコマンドを入力して Cluster Network Operator 設定オブジェクトにアノテーションを設定します。

      $ oc annotate Network.operator.openshift.io cluster \
        'networkoperator.openshift.io/network-migration'=""
    2. デフォルトの CNI ネットワークプロバイダーを変更するには、以下のコマンドを入力します。

      $ oc patch Network.config.openshift.io cluster \
        --type='merge' --patch '{ "spec": { "networkType": "OpenShiftSDN" } }'
    3. オプション: 移行前に作成したクラスターネットワーク設定のバックアップを使用して、ネットワーク設定に対して作成した可能性のあるカスタマイズを復元します。カスタマイズを復元するには、以下のコマンドを入力して Cluster Network Operator 設定を編集します。

      $ oc edit Network.config.openshift.io cluster
    4. 移行により OVN-Kubernetes デフォルト CNI ネットワークプロバイダーが無効になり、すべての OVN-Kubernetes Pod が削除されたことを確認するには、以下のコマンドを入力します。すべての OVN-Kubernetes Pod が停止するまでしばらく時間がかかる可能性があります。

      $ watch oc get pod -n openshift-ovn-kubernetes
    5. ロールバックを完了するには、クラスター内の各ノードを再起動します。たとえば、以下のような bash スクリプトを使用できます。このスクリプトは、ssh を使用して各ホストに接続でき、sudo がパスワードを要求しないように設定されていることを前提としています。

      #!/bin/bash
      
      for ip in $(oc get nodes  -o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}')
      do
         echo "reboot node $ip"
         ssh -o StrictHostKeyChecking=no core@$ip sudo shutdown -r -t 3
      done
    6. クラスターのノードが再起動したら、以下のコマンドを実行してデフォルトの CNI ネットワークプロバイダーが OpenShift SDN であることを確認します。status.networkType の値は OpenShiftSDN である必要があります。

      $ oc get network.config/cluster -o jsonpath='{.status.networkType}{"\n"}'
    7. OpenShift SDN Pod が READY の状態にあることを確認するには、以下のコマンドを入力します。

      $ oc get pod -n openshift-sdn --watch
    8. Cluster Network Operator 設定オブジェクトから移行アノテーションを削除するには、以下のコマンドを入力します。

      $ oc annotate Network.operator.openshift.io cluster \
        networkoperator.openshift.io/network-migration-
    9. OVN-Kubernetes ネットワークプロバイダー namespace を削除するには、以下のコマンドを入力します。

      $ oc delete namespace openshift-ovn-kubernetes