【しーえぬあい】

CNI(コンテナネットワークIF) とは?

💡 コンテナに網をつなぐ共通ルール!K8sネットワークの立役者
📌 このページのポイント
CNI(Container Network Interface)の仕組み コンテナ ランタイム ADD CNI プラグイン Flannel / Calico 設定 ネットワーク veth / bridge CNI プラグインが行うこと ① vethペア作成 コンテナ⇔ホスト ② IPアドレス付与 IPAM連携 ③ ルート設定 Pod間通信確保
CNI(コンテナネットワークインターフェース)のイメージ
ひよこ ひよこ

CNIって何のためにあるの?

ペンギン先生 ペンギン先生

コンテナIPアドレスを割り当てて、他のコンテナと通信できるようにするためのルールだよ。USBポートが共通規格でどのメーカーの機器もつながるように、CNIがあればどのネットワークプラグインでもKubernetesで使えるんだ

ひよこ ひよこ

プラグインって色々あるみたいだけど、何が違うのかな?

ペンギン先生 ペンギン先生

Flannelはシンプルなオーバーレイ型で導入が簡単、CalicoはBGPを使ったルーティング型で高性能、CiliumeBPFを使った最新世代で監視機能も充実しているよ。要件に応じて選ぶんだ

ひよこ ひよこ

CNIがないとコンテナは通信できないの?

ペンギン先生 ペンギン先生

Kubernetes上では基本的にCNIプラグインが必須だよ。クラスタを構築したらまずCNIプラグインを入れないと、Podが起動しても通信できない状態になるんだ

ひよこ ひよこ

どれを選べばいいか迷っちゃうね!

ペンギン先生 ペンギン先生

小規模ならFlannelで十分、ネットワークポリシーが必要ならCalico、eBPFの高性能と可観測性が欲しいならCiliumがおすすめだよ。最近はCiliumの採用が急増していて、クラウドベンダーのマネージドKubernetesでもデフォルトになりつつあるんだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CNI」って出てきたら「コンテナネットワークをつなぐための共通ルール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Container Network Interface」 = コンテナネットワークインターフェース
💬 Container(コンテナ)のNetwork(ネットワーク)のInterface(接点・仕様)で、コンテナとネットワークをつなぐ共通仕様だよ
← 用語集にもどる