Oracle Cloud Hangout Cafe Season 4 #2「Kubernetesのネットワーク」(2021年5月12日開催)

2024年2月20日(火)
仁井田 拓也
第2弾の連載第3回では、2021年5月12日に開催された 「Oracle Cloud Hangout Cafe Season4 #2『Kubernetesのネットワーク』」の発表内容に基づいて紹介していきます。

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プラグインを選択することが重要です。

日本オラクル株式会社

Oracle Groundbreaker Advocate
Senior Cloud Solution Engineer

日本オラクル株式会社所属。SIerにて様々なOSSを活用したシステム開発を経験し現職。現在は、SIer時代の知見を活かし、ソリューションアーキテクトとしてクラウドでのアプリケーション開発やクラウドネイティブ技術に関する技術/案件支援に従事。

Community:
Oracle Cloud Hangout Cafe メンバー(#ochacafe)

連載バックナンバー

仮想化/コンテナ技術解説
第6回

Oracle Cloud Hangout Cafe Season 4 #5「Kubernetesのオートスケーリング」(2021年8月4日開催)

2024/5/29
第2弾の連載第6回では、2021年8月4日に開催された「Oracle Cloud Hangout Cafe Season4 #5『Kubernetesのオートスケーリング』」の発表内容に基づいて紹介していきます。
仮想化/コンテナ技術解説
第5回

Oracle Cloud Hangout Cafe Season4 #4「Observability 再入門」(2021年9月8日開催)

2024/4/23
第2弾の連載第5回では、2021年9月8日に開催された「Oracle Cloud Hangout Cafe Season4 #4『Observability 再入門』」の発表内容に基づいて紹介していきます。
仮想化/コンテナ技術解説
第4回

Oracle Cloud Hangout Cafe Season6 #4「Pythonで作るAPIサーバー」(2022年12月7日開催)

2024/3/21
第2弾の連載第4回では、2022年12月7日に開催された 「Oracle Cloud Hangout Cafe Season6 #4『Pythonで作るAPIサーバー』」の発表内容に基づいて紹介していきます。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています