首页 / 最佳实践 / 网络 / 配置 Kube-OVN 网络支持 pod 多网卡(Alpha)

配置 Kube-OVN 网络支持 pod 多网卡(Alpha)

通过使用 Multus CNI, 为 Pod 添加多块不同网络的网卡。使用 Kube-OVN 网络的 Subnet 和 IP 的 CRD 来进行 IP 的高级管理,实现子网管理,IP 预留,随机分配,固定分配等功能。

安装 Multus CNI

  1. 克隆代码:

    git clone https://github.com/k8snetworkplumbingwg/multus-cni.git
  2. 进入目录:

    cd multus-cni/deployments
  3. 应用 multus 资源:

    kubectl apply -f multus-daemonset.yml

创建子网

  1. 根据以下示例创建 attachnet 子网:network-attachment-definition.yml

    注意:config 中的 provider 格式为 <NAME>.<NAMESPACE>.ovn<NAME><NAMESPACE> 分别为此 NetworkAttachmentDefinition CRnamenamespace

    apiVersion: "k8s.cni.cncf.io/v1"
    kind: NetworkAttachmentDefinition
    metadata:
      name: attachnet
      namespace: default
    spec:
      config: '{
          "cniVersion": "0.3.0",
          "type": "kube-ovn",
          "server_socket": "/run/openvswitch/kube-ovn-daemon.sock",
          "provider": "attachnet.default.ovn"
        }'

    创建完成后应用资源。

    kubectl apply -f network-attachment-definition.yml
  2. 使用以下示例创建第二个网卡所在的 Kube-ovn 子网: subnet.yml

    注意

    • spec.provider 必须与 NetworkAttachmentDefinition 中的 provider 保持一致。

    • 若需要使用 Underlay 子网,将子网的 spec.vlan 设置为需要使用的 VLAN CR 名称即可。其它子网参数按需配置。

    apiVersion: kubeovn.io/v1
    kind: Subnet
    metadata:
      name: subnet1
    spec:
      cidrBlock: 172.170.0.0/16
      provider: attachnet.default.ovn

    创建完成后应用资源。

    kubectl apply -f subnet.yml

创建 Pod 配置多网卡

  1. 根据以下示例创建 pod。

    注意

    • metadata.annotations 中需要包含一个 k8s.v1.cni.cncf.io/networks=default/attachnet 的键值对,值的格式为 <NAMESPACE>/<NAME><NAMESPACE><NAME> 分别为 NetworkAttachmentDefinition CR 的 namespace 和 name。

    • 如果 Pod 需要三网卡,将 k8s.v1.cni.cncf.io/networks 的值配置为 default/attachnet,default/attachnet2 即可。

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod1
      annotations:
        k8s.v1.cni.cncf.io/networks: default/attachnet
    spec:
      containers:
      - name: web
        image: nginx:latest
        ports:
        - containerPort: 80
  2. Pod 创建成功后,使用命令 kubectl exec pod1 -- ip a 查看 Pod 的 IP 地址。

其他功能