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

15.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 を設定します。

15.1.1. OVN-Kubernetes の機能

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

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

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

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

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

機能OVN-KubernetesOpenShift SDN

Egress IP

サポート対象

サポート対象

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

サポート対象

サポート対象

Egress ルーター

サポート対象 [2]

サポート対象

IPsec 暗号化

サポート対象

サポート対象外

IPv6

サポート対象 [3]

サポート対象外

Kubernetes ネットワークポリシー

サポート対象

一部サポート対象 [4]

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

サポート対象

サポート対象外

マルチキャスト

サポート対象

サポート対象

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

15.1.3. OVN-Kubernetes の制限

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

  • OVN-Kubernetes は、Kubernetes サービスの外部トラフィックポリシーまたは内部トラフィックポリシーをローカルに設定することをサポートしません デフォルト値は cluster で、両方のパラメーターでサポートされます。この制限は、LoadBalancerタイプ、NodePortタイプのサービスを追加するか、外部 IP でサービスを追加する際に影響を受ける可能性があります。
  • デュアルスタックネットワークに設定されたクラスターの場合、IPv4 トラフィックと IPv6 トラフィックの両方で、デフォルトゲートウェイと同じネットワークインターフェースを使用する必要があります。この要件を満たしていない場合、ovn kube-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 ファミリーがデフォルトゲートウェイに同じネットワークインターフェースを使用するようにすることです。