コンテンツにスキップ

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