【しーえぬあい】

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

最終更新:
💡 コンテナに網をつなぐ共通ルール!K8sネットワークの立役者

コンテナのネットワークを設定するプラグインと、呼び出すランタイムの間の共通仕様。設定・実行要求・結果の形式などを定め、KubernetesのPodネットワークにも利用される。

📌 このページのポイント
共通の呼び出しでネットワークを設定 ランタイム 呼び出す側 設定を渡す CNIプラグイン 要求に応じて ネットワーク設定 ADD 接続の設定例 Pod 接続口・IP 通信 経路 設定後は通信の経路を使う DELで解除・後片付けを要求 対応する版・OS・必要な機能を確認
矢印はADD要求とネットワーク設定の関係。下の線は設定された接続・経路で、通信のたびにADDを呼ぶ意味ではない。接続口・IP・経路の設定内容は実装によって異なる。
ひよこ ひよこ
CNIって何のためにあるの?
ペンギン先生 ペンギン先生
コンテナのネットワークを設定するプログラムを、ランタイムから共通の方式で呼ぶための仕様だよ。設定を渡してADDやDELなどを要求し、結果を受け取るんだ。共通仕様があっても、すべてのプラグインがどの環境でも動くわけではなく、対応する版やOSを確認する必要があるよ。
ひよこ ひよこ
プラグインって色々あるみたいだけど、何が違うのかな?
ペンギン先生 ペンギン先生
通信の方式や、IPアドレス管理・ポリシー・監視などの機能が違うよ。たとえばFlannelは複数の転送方式を持ち、CiliumはeBPFを使ったネットワークや可観測性の機能を提供する。方式や名前だけで性能が決まるわけではないんだ。
ひよこ ひよこ
CNIがないとコンテナは通信できないの?
ペンギン先生 ペンギン先生
コンテナ全般に唯一の方法というわけではないよ。Kubernetesでは、Podネットワークを実現するために対応したCNIプラグインを使う。マネージド環境では提供側が用意していることもあるので、利用者が必ず手動で追加するとは限らないんだ。
ひよこ ひよこ
すべての通信がCNIのプログラムを通るの?
ペンギン先生 ペンギン先生
CNIの呼び出しは主にネットワークの設定や解除のためだよ。実際の通信は、設定されたインターフェースや経路などを使う。毎回のパケットをCNIのADDコマンドへ送るような仕組みではないんだ。
ひよこ ひよこ
どれを選べばいいか迷っちゃうね!
ペンギン先生 ペンギン先生
使うクラスタやOSに対応しているか、必要な通信・ポリシー・監視の機能があるかを比べよう。提供側の指定、運用方法、変更時の移行手順も確認するといいね。小規模ならこれで必ず十分、というように規模だけで決めないことが大切だよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CNI」って出てきたら「コンテナにネットワークをつなぐための共通ルール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Container Network Interface」 = コンテナネットワークインターフェース
💬 Container(コンテナ)のNetwork(ネットワーク)のInterface(接点・仕様)で、コンテナとネットワークをつなぐ共通仕様だよ

参考資料

← 用語集にもどる