Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Contrail のコンポーネント

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

  • ネットワーク構成プレーンとは、Contrail がリソースを管理し、他の Kubernetes コントロール プレーンとやり取りできる機能のことです。

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

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

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

表 1 に、さまざまな Contrail コンポーネントについて説明します。

表 1:Contrail コンポーネント
ポッド名 説明
設定プレーン contrail-k8s-apiserver コントロール プレーン ノード

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

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

contrail-k8s-controller コントロール プレーン ノード

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

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

contrail-k8s-kubemanager コントロール プレーン ノード

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

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

マルチクラスタ導入では、分散ワークロード クラスタごとに 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 ノード ポッドと同じ機能を提供しますが、コントロール プレーン ノードには存在します。
メモ:

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

図 1 は、これらのコンポーネントを Kubernetes クラスターのコンテキストで示しています。わかりやすく、乱雑さを軽減するために、この図は Kubernetes コントロール プレーン ノード上のデータ プレーン ポッドを示していません。

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

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

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

図 2 は、 3 つの制御プレーン ノードが対話する方法を示しています。Kubernetes コンポーネントは REST を使用して相互に通信します。Contrail コントローラは、通常の Kubernetes REST インターフェイスの外部で iBGP を使用してルートを交換します。すべてのコントロール プレーン ノードは、クラスタ内の他のすべてのコントロール プレーン ノードと同じです。すべてのワーカー ノードは、クラスタ内の他のすべてのワーカー ノードと同じです。冗長性を確保するために、ワーカー ノード上の vRouter エージェントは、常に 2 つの Contrail コントローラとの XMPP 通信を確立します。

図 2:複数のコントロール プレーン ノード Multiple Control Plane Nodes