MultusとIPAMプラグイン

Multus CNI は、ポッドに複数のネットワークインターフェースを接続することを可能にするCNIプラグインです。MultusはCNIプラグインを置き換えるのではなく、CNIプラグインのマルチプレクサとして機能します。特に、ポッドがネットワーク集約型であり、SR-IOVなどのデータプレーンアクセラレーション技術をサポートする追加のネットワークインターフェースを必要とする場合に、Multusは有用です。

Multusは単独でデプロイすることはできません。常に、Kubernetesクラスターのネットワーク要件を満たす少なくとも1つの従来のCNIプラグインが必要です。そのCNIプラグインがMultusのデフォルトとなり、すべてのポッドに対して主要なインターフェースを提供するために使用されます。デフォルトオプションでK3sをデプロイする場合、そのCNIプラグインはFlannelです。

Helmリポジトリを追加

Multusをデプロイするには、以下のHelmリポジトリを使用することをお勧めします:

helm repo add rke2-charts https://rke2-charts.rancher.io
helm repo update

IPAMプラグインを設定

Multusによって作成された追加のインターフェースにIPアドレスを割り当てるために、IPAMプラグインが必要です。

  • host-local

  • Whereabouts

  • Multus DHCP daemon

host-local IPAMプラグインは、アドレス範囲のセットからIPアドレスを割り当てます。状態をホストのファイルシステムにローカルに保存するため、単一ホスト上のIPアドレスの一意性が保証されます。したがって、マルチノードクラスターには推奨しません。このIPAMプラグインは追加のデプロイを必要としません。詳細については、https://www.cni.dev/plugins/current/ipam/host-local/ を参照してください。

host-localプラグインを使用するには、以下の内容でmultus-values.yamlというファイルを作成してください:

config:
  cni_conf:
    confDir: /var/lib/rancher/k3s/agent/etc/cni/net.d
    binDir: /var/lib/rancher/k3s/data/current/bin/
    kubeconfig: /var/lib/rancher/k3s/agent/etc/cni/net.d/multus.d/multus.kubeconfig

Whereabouts は、クラスター全体でIPアドレスを割り当てるIPアドレス管理(IPAM)CNIプラグインです。

Whereabouts IPAMプラグインを使用するには、以下の内容でmultus-values.yamlというファイルを作成してください:

config:
  cni_conf:
    confDir: /var/lib/rancher/k3s/agent/etc/cni/net.d
    binDir: /var/lib/rancher/k3s/data/current/bin/
    kubeconfig: /var/lib/rancher/k3s/agent/etc/cni/net.d/multus.d/multus.kubeconfig
rke2-whereabouts:
  fullnameOverride: whereabouts
  enabled: true
  cniConf:
    confDir: /var/lib/rancher/k3s/agent/etc/cni/net.d
    binDir: /var/lib/rancher/k3s/data/current/bin/

dhcp IPAMプラグインは、ネットワーク上に既にDHCPサーバーが稼働している場合にデプロイできます。このデーモンセットは、DHCPリースの定期的な更新を担当します。詳細については、DHCP IPAMプラグインの公式ドキュメントを参照してください。

DHCPプラグインを使用するには、以下の内容でmultus-values.yamlというファイルを作成してください:

config:
  cni_conf:
    confDir: /var/lib/rancher/k3s/agent/etc/cni/net.d
    binDir: /var/lib/rancher/k3s/data/current/bin/
    kubeconfig: /var/lib/rancher/k3s/agent/etc/cni/net.d/multus.d/multus.kubeconfig
manifests:
  dhcpDaemonSet: true

Multusをデプロイ

multus-values.yamlファイルを作成した後、Multusをインストールする準備が整います:

helm install multus rke2-charts/rke2-multus -n kube-system --kubeconfig /etc/rancher/k3s/k3s.yaml --values multus-values.yaml

Helmチャートのインストールにより、必要なCNIバイナリを/var/lib/rancher/k3s/data/current/にインストールし、Multus CNI設定を/var/lib/rancher/k3s/agent/etc/cni/net.dに作成するためのMultusポッドを作成するDaemonSetがデプロイされます。

Multusの詳細については、https://github.com/k8snetworkplumbingwg/multus-cni/tree/master/docs[multus-cni]のドキュメントを参照してください。