「Oracle Cloud Hangout Cafe (OCHaCafe)」ダイジェスト2 3

CNIの代表的なプラグイン

CNIの代表的なプラグイン

ここからは、前述したKubernetesのネットワークモデルにおいて重要な役割を果たすCNIプラグインについて紹介します。その前に、まずはCNIプラグインの3つの実装パターンを解説します。

CNIプラグインには、大きく以下の3つの実装パターンがあります。

  • Overlay
    • ホスト間にトンネルを作成し、コンテナのパケットを下層レイヤーでホスト間のパケットにカプセル化
  • Routing
    • ホスト間通信をルーティングを介して実施(部分的に下層ネットワークに依存)
  • Underlay
    • コンテナとホストのネットワークセグメントを同一にして通信(下層ネットワークに強く依存)

cni-model

実装パターンの詳細は「Getting Started with Kubernetes | Kubernetes CNIs and CNI Plug-ins」を参照ください。

これらの3つの実装パターンのうち、ほとんどのCNIプラグインはOverlayもしくはRoutingを採用しているため、今回はこの2つの実装パターンのCNIプラグインについて紹介します。

flannel

flannelの最新版はv0.24.0(2024/2時点)となっており、CoreOS社(Red Hat社)が主体で開発しています。Linux BridgeとVXLANを組み合わせるシンプルなネットワーク構成を実装しています。VXLANデバイスとしてflannel.1(VLAN構成時のeth0.100のようなデバイスを構築するイメージ)が用意され、このデバイスによってパケットのカプセル化を実施します。このカプセル化が場合によってはオーバヘッドの原因になることもあります。後述するNetworkPolicyには非対応ですが、別のCNIプラグインであるCalicoと組み合わせたCanalという方式でNetworkPolicyを実現できます。

Calico

Calicoの最新版はv3.27.0(2024/2時点)となっており、Tigera社が主体で開発しています。Calicoでは、Overlay networking(VXLAN/IP in IP)やBGPルーティングなどを利用してネットワークを構成します。そのため、カプセル化やOverlayを利用しない方式も選択でき、オーバヘッドを軽減できます。Pod毎にCalixxxxxというvethが構築され、ホスト側とコンテナ側のペアリングを実施します。CalicoはNetworkPolicyに対応し、calicoctlという独自のCLIも提供しています。

Weave Net

Weave Netの最新版はv2.8.1(2024/2時点)となっており、Weaveworks社が主体で開発しています。Weave Netでは、Linuxカーネルの機能を利用してL2ネットワークを作成します。DaemonSet*2がネットワークをセットアップし、マシン間のルーティングを実施する仕組みで、Weave Net routerというルータを利用し、特定のMACアドレスが存在するピアホストを相互にTCP接続します。

*2: 全てのNodeが単一のPodのコピーを稼働させることを保証するリソース。DaemonSetによって管理されたリソースは必ず各Nodeに1つずつ配置されます

Weave NetはNetworkPolicyに対応し、NetworkPolicy用のアドオン(Network Policy Controller)によって実現されます。

Cilium

Ciliumの最新版はv1.14.5(2024/2時点)となっており、Isovalent社が主体で開発しています。CiliumはeBPF-based Networking, Observability, and Securityというコンセプトで開発されており、昨今注目されているeBPF(extended Berkeley Packet Filter)を利用してネットワークを構築します。Ciliumではカーネル内で実行されるプログラムを利用してIDベースで実行されるフィルタリングで実現し、従来利用されているiptablesよりも大幅に性能が向上しています。NetworkPolicyもサポートします。

kube-router

kube-routerの最新版はv2.0.1(2024/2時点)となっており、Cloud Native Labsが主体で開発しています。kube-routerは単一のDaemonSetやBinaryで構築されているシンプルな構成で、複数のコンポーネントやソフトウェアなどは不要です。Kubernetes専用ソリューションとして開発されているため、他オーケストレーションをサポートするためのオーバヘッドはありません。また、IPVS/LVS/BGPなどの従来からの基礎技術を利用しており、OverlayやSDNなども利用しません。NetworkPolicyもサポートします。

Antrea

Antreaの最新版はv1.14.1(2024/2時点)となっており、VMware社(現Broadcom社)が主体で開発しています。2021/4にGAになりました。AntreaはデータパスにOpen vSwitchを利用しており、iptablesよりもパフォーマンスが高いと言われています。また、VMware Tanzuにも統合されており、NetworkPolicyをサポートします。なお、Antreaの利用にはKubernetes v1.16以降であることが必要です。

ここまで6つのCNIプラグインを紹介しましたが、最後に整理します。

CNIプラグイン名 実装パターン NetworkPolicy 通信暗号化(オプション含) 商用サポート
flannel overlay
(routing(host-gw))
利用不可
(Canalとしては可)
あり なし
Calico overlay
routing
利用可能 あり あり
Weave Net overlay 利用可能 あり あり
Cilium overlay
routing
利用可能 あり あり
kube-router overlay
routing
利用可能 なし なし
Antrea overlay 利用可能 あり あり

ここで挙げたCNIプラグインは一例ですが、ユースケースや要件に応じて最適なCNIプラグインを選択することが重要です。

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る