Oracle Cloud Hangout Cafe Season 4 #2「Kubernetesのネットワーク」(2021年5月12日開催)
CNIの代表的なプラグイン
ここからは、前述したKubernetesのネットワークモデルにおいて重要な役割を果たすCNIプラグインについて紹介します。その前に、まずはCNIプラグインの3つの実装パターンを解説します。
CNIプラグインには、大きく以下の3つの実装パターンがあります。
- Overlay
- ホスト間にトンネルを作成し、コンテナのパケットを下層レイヤーでホスト間のパケットにカプセル化
- Routing
- ホスト間通信をルーティングを介して実施(部分的に下層ネットワークに依存)
- Underlay
- コンテナとホストのネットワークセグメントを同一にして通信(下層ネットワークに強く依存)
実装パターンの詳細は「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プラグインを選択することが重要です。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- コンテナとKubernetes作成・運用に関するセキュリティ
- Oracle Cloud Hangout Cafe Season5 #3「Kubernetes のセキュリティ」(2022年3月9日開催)
- コンテナ関連技術の現状を確認しておく
- CNDT2021、HPEのアーキテクトが解説するKubernetesネットワークの最新情報
- Project CalicoをKubernetesで使ってみる:構築編
- Kubernetes環境を構築して、実際にコンテナを動かしてみよう
- Docker1.9のマルチホストネットワーク
- 新しいセキュリティアプローチ、CalicoとIstio、Kubernetesによるゼロトラストネットワークとは
- Kubernetesの基礎
- CNDT 2022、IsovalentのアドボケイトがeBPFを解説