Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

CN2コンポーネント

CN2アーキテクチャは、ネットワーク設定プレーンとネットワークコントロールプレーン機能を実行するポッド、およびネットワークデータプレーン機能を実行するポッドで構成されています。

  • ネットワーク設定プレーンとは、CN2がリソースを管理し、他のKubernetesコントロールプレーンと対話できるようにする機能を指します。

  • ネットワーク制御プレーンは、CN2のフル機能を搭載したSDN機能を表しています。BGP を使用して他のコントローラと通信し、XMPP はワーカー ノード上の分散データ プレーン コンポーネントと通信します。

  • ネットワークデータプレーンは、各ノード(特にワークロードが存在するワーカーノード)で、パケットの送受信機能を指します。

設定およびコントロールプレーン機能を実行するポッドは、Kubernetesコントロールプレーンノードに存在します。データ プレーン機能を実行するポッドは、Kubernetes コントロール プレーン ノードと Kubernetes ワーカー ノードの両方に存在します。

表1 に、主要なCN2コンポーネントについて説明します。設定によっては、証明書の管理やステータス監視などの付随機能を実行する他のコンポーネント(図示せず)がある場合があります。

)
表 1:CN2 コンポーネント
ポッド名 ( 説明
設定プレーン1 contrail-k8s-apiserver 制御プレーン ノード

このポッドは、すべてのContrailリソースを管理するためのエントリーポイントである集約型APIサーバーです。通常の kube-apiserver に APIService として登録されます。通常の kube-apiserver は、すべてのネットワーク関連リクエストを contrail-k8s-apiserver に転送して処理します。

Kubernetesコントロールプレーンノードごとに1つのcontrail-k8s-apiserverポッドがあります。

contrail-k8s-controller 制御プレーン ノード

このポッドは、Kubernetes制御ループ機能を実行して、ネットワークリソースを調整します。ネットワーク リソースを常時監視し、リソースの実際の状態が意図した状態と一致していることを確認します。

Kubernetesコントロールプレーンノードごとに1つのcontrail-k8s-controllerポッドがあります。

contrail-k8s-kubemanager 制御プレーン ノード

このポッドは、KubernetesリソースとContrailリソースの間のインターフェイスです。サービスや名前空間などの通常のKubernetesリソースに対する変更については、kube-apiserverを監視し、ネットワークリソースに影響を与える変更に作用します。

単一クラスタの導入では、Kubernetesコントロールプレーンノードごとに1つのcontrail-k8s-kubemanagerポッドがあります。

マルチクラスターの導入では、分散ワークロードクラスターごとにさらに1つのcontrail-k8s-kubemanagerポッドがあります。

制御プレーン1 Contrail制御 制御プレーン ノード

このポッドは、ワーカーノードに設定を渡し、ルート学習と配信を実行します。ネットワーク制御プレーンに影響を与えるすべてのものに対して kube-apiserver を監視し、必要に応じて BGP ピアや vRouter エージェント(XMPP 経由)と通信します。

Kubernetesコントロールプレーンノードごとに1つのcontrail制御ポッドがあります。

データ プレーン contrail-vrouter-nodes ワーカー ノード

このポッドには、vRouterエージェントとvRouter自体が含まれています。

vRouter エージェントは、Contrail コントローラーと対話する際に、ローカル vRouter に代わって動作します。ノードごとにエージェントが 1 つあります。エージェントは、2 つの Contrail コントローラとの XMPP セッションを確立して、以下の機能を実行します。

  • は、制御プレーンからの設定をvRouterが理解するオブジェクトに変換し、
  • ルートを管理するためのコントロールプレーンとのインターフェイス
  • データプレーンから統計情報を収集してエクスポートします。

vRouter は、同じ場所にあるポッドとワークロードに対してパケットの送受信機能を提供します。CNIプラグイン機能を提供します。

contrail-vrouter-masters 制御プレーン ノード このポッドは、contrail-vrouter-nodesポッドと同じ機能を提供しますが、コントロールプレーンノード上に存在します。

1ネットワーク構成プレーンとネットワーク制御プレーンを構成するコンポーネントは、総称して Contrail コントローラと呼ばれます。

図 1 は、これらのコンポーネントを Kubernetes クラスタのコンテキストで示しています。

わかりやすくするため、また乱雑さを軽減するために、図にはContrailコントローラを搭載したノード上のデータプレーンポッドは表示されていません。

図 1:CN2 コンポーネント CN2 Components

アップストリームの Kubernetes または Rancher RKE2 で実行する場合、Contrail コントローラはすべての CN2 クラスタ データをデフォルトでメインの Kubernetes etcd データベースに保存します。OpenShift上で実行する場合、Contrailコントローラは、すべてのCN2クラスタデータを独自のContrail etcdデータベースに保存します。

kube-apiserver は、クラスターの Kubernetes REST API コールのエントリ ポイントです。すべてのネットワークリクエストをContrail-k8s-apiserverに転送します。Contrail API呼び出しのエントリポイントです。contrail-k8s-apiserverは、受信するネットワークリクエストを、対応するCN2オブジェクトへのREST API呼び出しに変換します。場合によっては、これらの呼び出しにより、Contrail コントローラが 1 つ以上のワーカー ノード上の vRouter エージェントに XMPP メッセージを送信したり、他のコントロール プレーン ノードまたは外部ルーターに BGP メッセージ(図示せず)を送信したりすることがあります。これらの XMPP および BGP メッセージは、通常の Kubernetes ノード間通信の外部で送信されます。

contrail-k8s-kubemanager(クラスター)コンポーネントは、マルチクラスターの導入にのみ存在します。さまざまなタイプの導入の詳細については、「導入モデル」を参照してください。

図 2 は、複数の Contrail コントローラを持つクラスタを示しています。これらのコントローラは、コントロール プレーン ノード上に存在します。Kubernetes コンポーネントは、REST を使用して相互に通信します。Contrail コントローラは、通常の Kubernetes REST インターフェイスの外部で、iBGP を使用して互いにルートを交換します。冗長性を確保するために、ワーカーノードのvRouterエージェントは、常に2つのContrailコントローラとのXMPP通信を確立します。

図 2:複数の Contrail コントローラ Multiple Contrail Controllers