第19章 OVN-Kubernetes デフォルト CNI ネットワークプロバイダー

19.1. OVN-Kubernetes デフォルト Container Network Interface (CNI) ネットワークプロバイダーについて

OpenShift Container Platform クラスターは、Pod およびサービスネットワークに仮想化ネットワークを使用します。OVN-Kubernetes Container Network Interface (CNI) プラグインは、デフォルトのクラスターネットワークのネットワークプロバイダーです。OVN-Kubernetes は Open Virtual Network (OVN) をベースとしており、オーバーレイベースのネットワーク実装を提供します。OVN-Kubernetes ネットワークプロバイダーを使用するクラスターは、各ノードで Open vSwitch (OVS) も実行します。OVN は、宣言ネットワーク設定を実装するように各ノードで OVS を設定します。

19.1.1. OVN-Kubernetes の機能

OVN-Kubernetes Container Network Interface (CNI) クラスターネットワークプロバイダーは、以下の機能を実装します。

  • Open Virtual Network (OVN) を使用してネットワークトラフィックフローを管理します。OVN はコミュニティーで開発され、ベンダーに依存しないネットワーク仮想化ソリューションです。
  • ingress および egress ルールを含む Kubernetes ネットワークポリシーのサポートを実装します。
  • ノード間にオーバーレイネットワークを作成するには、VXLAN ではなく GENEVE (Generic Network Virtualization Encapsulation) プロトコルを使用します。

19.1.2. サポートされるデフォルトの CNI ネットワークプロバイダー機能マトリクス

OpenShift Container Platform は、OpenShift SDN と OVN-Kubernetes の 2 つのサポート対象のオプションをデフォルトの Container Network Interface (CNI) ネットワークプロバイダーに提供します。以下の表は、両方のネットワークプロバイダーの現在の機能サポートをまとめたものです。

表19.1 デフォルトの CNI ネットワークプロバイダー機能の比較

機能OVN-KubernetesOpenShift SDN

Egress IP

サポート対象

サポート対象

Egress ファイアウォール [1]

サポート対象

サポート対象

Egress ルーター

サポート対象 [2]

サポート対象

IPsec 暗号化

サポート対象

サポート対象外

IPv6

サポート対象 [3] [4]

サポート対象外

Kubernetes ネットワークポリシー

サポート対象

サポート対象

Kubernetes ネットワークポリシーログ

サポート対象

サポート対象外

ハードウェアのオフロード

サポート対象

サポート対象外

マルチキャスト

サポート対象

サポート対象

  1. egress ファイアウォールは、OpenShift SDN では egress ネットワークポリシーとしても知られています。これはネットワークポリシーの egress とは異なります。
  2. OVN-Kubernetes の egress ルーターはリダイレクトモードのみをサポートします。
  3. IPv6 はベアメタルクラスターでのみサポートされます。
  4. IPv6 シングルスタックは、Kubernetes NMState をサポートしません。

19.1.3. OVN-Kubernetes の制限

OVN-Kubernetes Container Network Interface (CNI) クラスターネットワークプロバイダーには以下の制限があります。

  • OVN-Kubernetes は、Kubernetes サービスの内部トラフィックポリシーを localに設定するサポートは行っていません。この制限は、タイプCluster IPLoad BalancerNode Portのサービスの追加時、または外部 IP を使用したサービスの追加時に、アプリケーションへのネットワーク通信に影響を与える可能性があります。
  • sessionAffinityConfig.clientIP.timeoutSeconds サービスは、OpenShift OVN 環境では効果がありませんが、OpenShiftSDN 環境では効果があります。この非互換性により、OpenShiftSDN から OVN への移行が困難になる可能性があります。
  • デュアルスタックネットワークに設定されたクラスターでは、IPv4 と IPv6 の両方のトラフィックがデフォルトゲートウェイとして同じネットワークインターフェイスを使用する必要があります。この要件が満たされない場合には、ovnkube-node デーモンセットのホストにある Pod は、CrashLoopBackOff 状態になります。oc get pod -n openshift-ovn-kubernetes -l app=ovnkube-node -o yaml のようなコマンドで Pod を表示すると、以下の出力のように、status フィールドにデフォルトゲートウェイに関する複数のメッセージが表示されます。

    I1006 16:09:50.985852   60651 helper_linux.go:73] Found default gateway interface br-ex 192.168.127.1
    I1006 16:09:50.985923   60651 helper_linux.go:73] Found default gateway interface ens4 fe80::5054:ff:febe:bcd4
    F1006 16:09:50.985939   60651 ovnkube.go:130] multiple gateway interfaces detected: br-ex ens4

    唯一の解決策は、両方の IP ファミリーがデフォルトゲートウェイに同じネットワークインターフェイスを使用するように、ホストネットワークを再設定することです。

  • デュアルスタックネットワーク用に設定されたクラスターの場合、IPv4 と IPv6 の両方のルーティングテーブルにデフォルトゲートウェイが含まれている必要があります。この要件が満たされない場合には、ovnkube-node デーモンセットのホストにある Pod は、CrashLoopBackOff 状態になります。oc get pod -n openshift-ovn-kubernetes -l app=ovnkube-node -o yaml のようなコマンドで Pod を表示すると、以下の出力のように、status フィールドにデフォルトゲートウェイに関する複数のメッセージが表示されます。

    I0512 19:07:17.589083  108432 helper_linux.go:74] Found default gateway interface br-ex 192.168.123.1
    F0512 19:07:17.589141  108432 ovnkube.go:133] failed to get default gateway interface

    唯一の解決策として、両方の IP ファミリーにデフォルトゲートウェイが含まれるようにホストネットワークを再設定できます。