コンテンツにスキップ

CNI@ネットワーク系

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. CNI

CNIとは

CNIは、Cluster内にL2またはL3を提供する (CNIによって様々) 。

Podを新しく作成する時に、kubeletからのリクエストによって、新しいPodをClusterネットワークに参加させる。

kubeletは、設定ファイルで指定されたCNIを実行する。

その後、CNIはPodに仮想NICを紐付け、Node内のClusterネットワークのIPアドレスをPodの仮想NICに割り当てる。

PodをNode内のClusterネットワークに参加させると、異なるNode上のPod間で通信できるようになる。

kubernetes_cni-plugin


CNIとCRIの関係


CNIによるクラスター内の通信

▼ PodとNode間の通信

▼ 同じNode上のPod間

▼ 異なるNode上のPod間


02. オーバーレイモード

オーバーレイモードとは

オーバーレイモードは、Podのネットワークインターフェース (eth) 、Nodeの仮想ネットワークインターフェース (veth) 、Nodeのブリッジ (cni) 、NATルーター (Cilium以外のCNIはiptables、Cilium CNIはCilium) 、Nodeのネットワークインターフェース (eth) 、といったコンポーネントから構成される。

オーバーレイネットワークを使用して、Clusterネットワークを作成し、異なるNode上のPod間を接続する。

kubernetes_cni-addon_overlay-mode


CNI例

CNIによって、L2またはL3を提供する。

  • calico-ipip (L3、Kubeadmで推奨)
  • flannel-vxlan (L2)
  • Weave (L2)
  • Cilium (L3/L4/L7)


オーバーレイモードの仕組み

▼ 同一Node上のPod間通信

Podのネットワークインターフェース (eth) 、Nodeの仮想ネットワークインターフェース (veth) 、Nodeのブリッジ (cni) 、を使用して、同じNode上のPod間でパケットを送受信する。

kubernetes_cni-addon_overlay-mode_same-node

▼ 同一Node上のPod間通信

Podのネットワークインターフェース (eth) 、Nodeの仮想ネットワークインターフェース (veth) 、Nodeのブリッジ (cni) 、NATルーター (Cilium以外はiptables、Cilium) 、Nodeのネットワークインターフェース (eth) を使用して、異なるNode上のPod間でパケットを送受信する。

kubernetes_cni-addon_overlay-mode_diff-node


03. ルーティングモード

ルーティングモードとは

ルーティングテーブルを使用して、Clusterネットワークを作成し、異なるNode上のPod間を接続する。


CNI例

CNIによって、L2またはL3を提供する。

  • calico-bgp (L3、Kubeadmで推奨)
  • flannel-hostgw (L3)
  • sriov


04. アンダーレイモード

アンダーレイモードとは

アンダーレイネットワークを使用して、Clusterネットワークを作成し、異なるNode上のPod間を接続する。


CNI例

CNIによって、L2またはL3を提供する。

  • Aliyun


06. その他のCNI

  • Antrea (L3/L4)
  • Multus
  • Whereabout