multus

Multus 可以给 Pod 添加多张网卡。

master plugin 负责接入 K8s 网络。

Multus 使用 CRDs 扩展 K8s API,来存储 Multus 所需信息,例如除 master plugin 之外网卡的配置信息。

Multus 以 daemonset 的形式存在于节点上。Multus daemonset 做了以下几件事:

  • 将 multus binary 放到每个节点的 /opt/cni/bin 目录下

  • 基于默认网络配置文件 (通常是 /etc/cni/net.d 下字典序第一个配置文件) 生成 /etc/cni/net.d/00-multus.conf

  • 在每个节点上创建 /etc/cni/net.d/multus.d 目录,包含 Multus 访问 Kubernetes API 的认证信息。

Multus 定义了一个 CRD: NetworkAttachmentDefinition,通过在创建 Pod 时加上相应的注解来增加指定的网卡。在注解中以逗号分隔,可以指定多个额外的网卡。也可以指定多个相同类型的网卡。

  • Pod 的 Annotation 里有详细的网络配置信息

配置

  • daemonset

    • git clone https://github.com/k8snetworkplumbingwg/multus-cni.git && cd multus-cni

    • cat ./images/multus-daemonset.yml | kubectl apply -f -

  • 定义附加网卡。 注意: config 中 master 字段需要和主机上默认路由的网卡相同

  • 如果 NetworkAttachmentDefinition 没有 spec,multus 会在 /etc/cni/multus/net.d 里面找相应的配置文件。更推荐此做法,达到解耦的效果。

  • 创建 Pod

  • 可以指定新增网卡的名称 k8s.v1.cni.cncf.io/networks: macvlan-conf@<ifname>

Last updated