---
title: VLAN支持
description: "Kube-OVN当前默认使用Geneve对跨主机流量进行封装，在基础设施之上抽象出一层虚拟的Overlay网络。此外，组件在1.2.0版本开始支持VLAN功能，针对性能和吞吐量敏感的场景支持了VLAN模式的Underlay网络，容器网络可以直接通过VLAN接入物理交换机，达到更好的性能和吞吐量。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/ecosystemEnable/Kubernetes/kunpengkubeovn_06_0012.html
sourcePath: /source/zh/kunpengcpfs/ecosystemEnable/Kubernetes/kunpengkubeovn_06_0012.html
indexId: ead427195a7d75bbe699fa9f84505beaf81f50802aff8379138a1808f4d1145f77
---
# VLAN支持

Kube-OVN当前默认使用Geneve对跨主机流量进行封装，在基础设施之上抽象出一层虚拟的Overlay网络。此外，组件在1.2.0版本开始支持VLAN功能，针对性能和吞吐量敏感的场景支持了VLAN模式的Underlay网络，容器网络可以直接通过VLAN接入物理交换机，达到更好的性能和吞吐量。

为了使用VLAN模式，主机上需要有一块专门的网卡供容器网络使用，该网卡在交换机一端的端口需要工作在Trunk模式下，来允许802.1Q格式的数据包通过。目前Geneve或VLAN是一个全局选项，所有的容器必须工作在相同模式。

VLAN模式要求有独立的网卡供Kube-OVN的容器网络使用，单网络平面不建议使用VLAN模式运行。


配置VLAN支持操作示例如下：

1. 修改安装脚本。
  将脚本中的NETWORK_TYPE设置成VLAN，VLAN_INTERFACE_NAME设置成对应的主机网卡，按照原有方式部署集群。

2. 创建VLAN资源。
  1 kubectl create -f vlan.yaml

  创建如下VLAN资源。

  1 vim vlan.yaml

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

3. 创建Namespace命名空间。
  1 kubectl create -f namespace.yaml

  创建如下命名空间。

  1 vim namespace.yaml

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

4. 创建Subnet并绑定VLAN。
  1 kubectl create -f subnet.yaml

  命令创建如下Subnet子网，多个Subnet可以绑定到同一VLAN。

  1 vim subnet.yaml

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

5. 创建Pods，指定命名空间即可。
  如下命令所示，即可在3创建的命名空间中部署一个nginx pod，并在对应VLAN内为其分配IP资源。

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