Vlan 功能在 1.2 版本开始支持,目前还在初期,使用方式未来可能会继续调整,欢迎大家反馈使用体验

默认情况下 OVN 使用 Geneve 对跨主机流量进行封装,在基础设施之上抽象出一层虚拟的 overlay 网络。对于性能和吞吐量敏感的场景,Kube-OVN 还支持 Vlan 模式的 underlay 网络,容器网络可以直接通过 vlan 接入物理交换机,达到更好的性能和吞吐量。

为了使用 Vlan 模式,主机上需要有一块专门的网卡供容器网络使用,该网卡在交换机一端的端口需要工作在 trunk 模式下,来允许 802.1q 格式的数据包通过。

目前 Geneve 或 Vlan 是一个全局选项,所有容器必须工作在相同的网络模式下,未来我们将会进行调整使得一个集群下两种网络模式的容器可以共存。

以 Vlan 模式安装 Kube-OVN

  1. 下载安装脚本
  1. wget https://raw.githubusercontent.com/alauda/kube-ovn/release-1.2/dist/images/install.sh
  1. 修改install.sh, 将 NETWORK_TYPE 设置为 vlan, VLAN_INTERFACE_NAME 设置为对应的主机网卡

  2. 运行安装脚本

  1. bash install.sh

创建 Vlan 资源

  1. apiVersion: kubeovn.io/v1
  2. kind: Vlan
  3. metadata:
  4. name: product
  5. spec:
  6. vlanId: 10

创建 Namespace

  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. name: product
  5. labels:
  6. name: product

创建 Subnet 并绑定 Vlan

多个 Subnet 可以绑定到同一 Vlan

  1. apiVersion: kubeovn.io/v1
  2. kind: Subnet
  3. metadata:
  4. name: product
  5. spec:
  6. cidrBlock: 10.100.0.0/16
  7. default: false
  8. gateway: 10.100.0.1
  9. gatewayType: distributed
  10. natOutgoing: true
  11. vlan: product
  12. namespaces:
  13. - product

创建 pod

  1. kubectl run samplepod --image=nginx --namespace=product