第1章 ネットワーク設定について
ネットワークのカスタマイズとデフォルト設定を Red Hat build of MicroShift デプロイメントに適用する方法を学びます。各ノードは単一のマシンと単一の Red Hat build of MicroShift に含まれているため、デプロイごとに個別の構成、Pod、および設定が必要です。
クラスター管理者は、クラスターで実行されるアプリケーションを外部トラフィックに公開し、ネットワーク接続のセキュリティーを保護するための複数のオプションがあります。
- NodePort などのサービス
-
IngressやRouteなどの API リソース
デフォルトで、Kubernetes は各 Pod に、Pod 内で実行しているアプリケーションの内部 IP アドレスを割り当てます。Pod とそのコンテナーの間にはトラフィックを配置できますが、NodePort などのサービスで公開されている場合を除き、クラスター外のクライアントは Pod に直接ネットワークアクセスできません。
NodePort サービスの接続問題のトラブルシューティングを行うには、リリースノートの既知の問題を読みください。
1.1. OVN-Kubernetes ネットワークプラグインについて リンクのコピーリンクがクリップボードにコピーされました!
OVN-Kubernetes は、Red Hat build of MicroShift デプロイメントのデフォルトのネットワークソリューションです。OVN-Kubernetes は、Open Virtual Network (OVN) に基づく Pod およびサービス用の仮想化ネットワークです。OVN-Kubernetes Container Network Interface (CNI) プラグインは、クラスターのネットワークプラグインです。OVN-Kubernetes ネットワークプラグインを使用するクラスターは、ノードで Open vSwitch (OVS) も実行します。OVN は、宣言ネットワーク設定を実装するようにノードで OVS を設定します。
1.1.1. ネットワークトポロジー リンクのコピーリンクがクリップボードにコピーされました!
OVN-Kubernetes は、オーバーレイベースのネットワーク実装を提供します。このオーバーレイには、Service および NetworkPolicy の OVS ベースの実装が含まれています。オーバーレイネットワークは、Geneve (Generic Network Virtualization Encapsulation) トンネルプロトコルを使用します。Geneve トンネルの Pod 最大送信単位 (MTU) は、ホスト上の物理インターフェイスの MTU よりも小さい値に設定されます。この小さい MTU により、送信前にトンネルヘッダーに追加される必要な情報のためのスペースが確保されます。
OVS は Red Hat build of MicroShift ノードで systemd サービスとして実行します。OVS RPM パッケージは、microshift-networking RPM パッケージへの依存関係としてインストールされます。OVS は、microshift-networking RPM がインストールされるとすぐに開始します。
Red Hat build of MicroShift ネットワークトポロジー
1.1.1.1. 仮想化ネットワークの OVN 論理コンポーネントの説明 リンクのコピーリンクがクリップボードにコピーされました!
- OVN ノードスイッチ
<node-name>という名前の仮想スイッチ。OVN ノードスイッチの名前は、ノードのホスト名に基づいて付けられます。-
この例では、
node-nameはmicroshift-devです。
-
この例では、
- OVN クラスタールーター
ovn_cluster_routerという名前の仮想ルーター。分散ルーターとも呼ばれます。-
この例では、クラスターネットワークは
10.42.0.0/16です。
-
この例では、クラスターネットワークは
- OVN 参加スイッチ
-
joinという名前の仮想スイッチ。 - OVN ゲートウェイルーター
-
GR_<node-name>という名前の仮想ルーター。外部ゲートウェイルーターとも呼ばれます。 - OVN 外部スイッチ
-
ext_<node-name>という名前の仮想スイッチ。
1.1.1.2. ネットワークトポロジー図の接続の説明 リンクのコピーリンクがクリップボードにコピーされました!
-
ネットワークサービスデバイス
enp1s0と OVN 外部スイッチext_microshift-devの間の North-South トラフィックは、ゲートウェイブリッジbr-exによって OVS パッチポートを介して提供されます。 -
OVN ゲートウェイルーター
GR_microshift-devは、論理ルーターポート 4 を介して外部ネットワークスイッチext_microshift-devに接続しています。ポート 4 にはノード IP アドレス 192.168.122.14 が割り当てられます。 参加スイッチ
joinは、OVN ゲートウェイルーターGR_microshift-devを OVN クラスタールーターovn_cluster_routerに接続します。IP アドレス範囲は 100.62.0.0/16 です。-
OVN ゲートウェイルーター
GR_microshift-devは、論理ルーターポート 3 を介して OVN 参加スイッチjoinに接続します。ポート 3 は内部 IP アドレス 100.64.0.2 に接続します。 -
OVN クラスタールーター
ovn_cluster_routerは、論理ルーターポート 2 を介して 参加スイッチjoinに接続します。ポート 2 は内部 IP アドレス 100.64.0.1 に接続します。
-
OVN ゲートウェイルーター
-
OVN クラスタールーター
ovn_cluster_routerは、論理ルーターポート 1 を介してノードスイッチmicroshift-devに接続します。ポート 1 には、OVN クラスターネットワーク IP アドレス 10.42.0.1 が割り当てられます。 -
Pod とネットワークサービス間の East-West トラフィックは、OVN クラスタールーター
ovn_cluster_routerとノードスイッチmicroshift-devによって提供されます。IP アドレス範囲は 10.42.0.0/24 です。 -
Pod 間の East-West トラフィックは、ネットワークアドレス変換 (NAT) を使用せずに、ノードスイッチ
microshift-devによって提供されます。 -
Pod と外部ネットワーク間の North-South トラフィックは、OVN クラスタールーター
ovn_cluster_routerとホストネットワークによって提供されます。このルーターは、ovn-kubernetes管理ポートovn-k8s-mp0を介して、IP アドレス 10.42.0.2 で接続しています。 すべての Pod は、インターフェイスを介して OVN ノードスイッチに接続します。
-
この例では、Pod 1 と Pod 2 は、
Interface 1とInterface 2を介してノードスイッチに接続しています。
-
この例では、Pod 1 と Pod 2 は、
1.1.2. IP 転送 リンクのコピーリンクがクリップボードにコピーされました!
ホストネットワーク sysctl net.ipv4.ip_forward カーネルパラメーターは、起動時に ovnkube-master コンテナーによって自動的に有効になります。これは、着信トラフィックを CNI に転送するために必要です。たとえば、ip_forward が無効になっている場合は、クラスターの外部から NodePort サービスにアクセスすると失敗します。
1.1.3. ネットワークパフォーマンスの最適化 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、リソース消費を最小限に抑えるために、OVS サービスに 3 つのパフォーマンス最適化が適用されます。
-
ovs-vswitchd.serviceおよびovsdb-server.serviceへの CPU アフィニティー -
no-mlockallからopenvswitch.service -
ハンドラーと
revalidatorのスレッドをovs-vswitchd.serviceに限定
1.1.4. ネットワーク機能 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of MicroShift 4.13 で利用可能なネットワーク機能には、以下があります。
- Kubernetes ネットワークポリシー
- 動的ノード IP
- 指定されたホストインターフェイス上のクラスターネットワーク
Red Hat build of MicroShift 4.13 で利用できないネットワーク機能には、以下があります。
- Egress IP/ファイアウォール/QOS: 無効
- ハイブリッドネットワーク: サポートなし
- IPsec: サポートなし
- ハードウェアオフロード: サポートなし
1.1.5. Red Hat build of MicroShift ネットワーキングコンポーネントとサービス リンクのコピーリンクがクリップボードにコピーされました!
この簡単な概要では、Red Hat build of MicroShift でのネットワークコンポーネントとその操作を説明します。microshift-networking RPM は、ネットワーク関連の依存関係と systemd サービスを自動的に取り込み、ネットワークを初期化するパッケージです (microshift-ovs-init systemd サービスなど)。
- NetworkManager
-
NetworkManager は、Red Hat build of MicroShift ノードで初期ゲートウェイブリッジを設定するのに必要です。NetworkManager および
NetworkManager-ovsRPM パッケージは、必要な設定ファイルを含むmicroshift-networkingRPM パッケージへの依存関係としてインストールされます。Red Hat build of MicroShift の NetworkManager はkeyfileプラグインを使用し、microshift-networkingRPM パッケージのインストール後に再起動します。 - microshift-ovs-init
-
microshift-ovs-init.serviceは、microshift.service に依存する systemd サービスとして、microshift-networkingRPM パッケージによりインストールされます。OVS ゲートウェイブリッジを設定します。 - OVN コンテナー
2 つの OVN-Kubernetes デーモンセットが Red Hat build of MicroShift によってレンダリングおよび適用されます。
-
ovnkube-master
northd、nbdb、sbdb、およびovnkube-masterコンテナーが含まれます。 ovnkube-node ovnkube-node には、OVN-Controller コンテナーが含まれています。
Red Hat build of MicroShift の起動後、OVN-Kubernetes デーモンセットが
openshift-ovn-kubernetesnamespace にデプロイされます。
-
ovnkube-master
- パッケージ
OVN-Kubernetes マニフェストと起動ロジックは Red Hat build of MicroShift に組み込まれています。
microshift-networkingRPM に含まれる systemd サービスと設定は次のとおりです。-
NetworkManager.service の
/etc/NetworkManager/conf.d/microshift-nm.conf -
ovs-vswitchd.service の
/etc/systemd/system/ovs-vswitchd.service.d/microshift-cpuaffinity.conf -
/etc/systemd/system/ovsdb-server.service.d/microshift-cpuaffinity.conf -
microshift-ovs-init.service の
/usr/bin/configure-ovs-microshift.sh -
microshift-ovs-init.service の
/usr/bin/configure-ovs.sh -
CRI-O サービスの
/etc/crio/crio.conf.d/microshift-ovn.conf
-
NetworkManager.service の
1.1.6. ブリッジマッピング リンクのコピーリンクがクリップボードにコピーされました!
ブリッジマッピングにより、プロバイダーネットワークのトラフィックは、物理ネットワークに到達することが可能となります。トラフィックはプロバイダーネットワークから出て、br-int ブリッジに到達します。br-int と br-ex の間のパッチポートは、トラフィックがプロバイダーネットワークとエッジネットワークを通信できるようにします。Kubernetes Pod は、仮想イーサネットペアを介して br-int ブリッジに接続されます。仮想イーサネットペアの一端は Pod の namespace に接続され、他端は br-int ブリッジに接続されます。
1.1.6.1. プライマリーゲートウェイインターフェイス リンクのコピーリンクがクリップボードにコピーされました!
ovn.yaml 設定ファイルで、目的のホストインターフェイス名を gatewayInterface として指定できます。指定されたインターフェイスは、CNI ネットワークのゲートウェイブリッジとして機能する OVS ブリッジ br-ex に追加されます。