CN2コンポーネント
CN2アーキテクチャは、ネットワーク設定プレーンとネットワークコントロールプレーン機能を実行するポッド、およびネットワークデータプレーン機能を実行するポッドで構成されています。
-
ネットワーク設定プレーンとは、CN2がリソースを管理し、他のKubernetesコントロールプレーンと対話できるようにする機能を指します。
-
ネットワーク制御プレーンは、CN2のフル機能を搭載したSDN機能を表しています。BGP を使用して他のコントローラと通信し、XMPP はワーカー ノード上の分散データ プレーン コンポーネントと通信します。
-
ネットワークデータプレーンは、各ノード(特にワークロードが存在するワーカーノード)で、パケットの送受信機能を指します。
設定およびコントロールプレーン機能を実行するポッドは、Kubernetesコントロールプレーンノードに存在します。データ プレーン機能を実行するポッドは、Kubernetes コントロール プレーン ノードと Kubernetes ワーカー ノードの両方に存在します。
表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 は、同じ場所にあるポッドとワークロードに対してパケットの送受信機能を提供します。CNIプラグイン機能を提供します。 |
contrail-vrouter-masters | 制御プレーン ノード | このポッドは、contrail-vrouter-nodesポッドと同じ機能を提供しますが、コントロールプレーンノード上に存在します。 | |
1ネットワーク構成プレーンとネットワーク制御プレーンを構成するコンポーネントは、総称して Contrail コントローラと呼ばれます。 |
図 1 は、これらのコンポーネントを Kubernetes クラスタのコンテキストで示しています。
わかりやすくするため、また乱雑さを軽減するために、図にはContrailコントローラを搭載したノード上のデータプレーンポッドは表示されていません。

アップストリームの 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通信を確立します。
