vxlan在Flannel中的Overlay网络的实现

本文介绍了vxlan在Flannel中的应用,包括vxlan的基本概念、Linux内核的vxlan支持,以及如何手动配置vxlan网络进行实验。通过Flannel的vxlan backend,可以在多主机的Kubernetes环境中实现Overlay网络,提供虚拟网络的扩展性和隔离性。
摘要由CSDN通过智能技术生成

vxlan在Flannel中的Overlay网络的实现

Flannel(v0.7+)支持接入不同的backend来搭建Overlay网络,如:

  • udp
  • vxlan
  • alloc
  • host-gw
  • aws-vpc
  • gce
  • ali-vpc

其中host-gw, aws-vpc, gce以及ali-vpc都需要L2网络层的支持,
如果没有接入云服务,通常维护成本也比较高.

alloc只为本机创建subnet,在多个主机上的虚拟子网不能直接通信.

本文将介绍对平台和协议耦合最低的两个方案之一: vxlan的原理及在Flannel中的实现,
包含以下内容:

  • vxlan简介
  • Linux内核的vxlan支持
  • Flannel中vxlan backend实现

vxlan简介

vxlan(Virtual eXtensible Local Area Network)
是一种基于IP网络(L3)的基础上虚拟L2网络连接的解决方案.
为多租户平台提供了虚拟网络强大的扩展能力和隔离性.
是"软件定义网络"(Software-defined Networking, 简称SDN)的协议之一.

相比vlan, vxlan有着以下优势:

  • 使用一个24 bit的VXLAN Network Identifier (VNI)来区分不同的子网,这在多租户场景下提供了很强的扩展能力
  • vxlan的不同主机之间的虚拟网络的通信时,通过UDP封装L2数据

通俗来讲,vxlan在多个主机原有的IP网络(可能无法直接在L2直接通信)中抽象出很多自定义的网络.

这里有一个关键的设备vtep(VXLAN Tunnel End Point)承担了自定义虚拟子网中不同网段的L2通信的转发.

图1. vxlan定义的逻辑网络

图1中使用传统虚拟化来说明vxlan的逻辑网络,在容器网络也有着相同的网络架构
图中每个逻辑子网对应唯一的VNI以及虚拟子网,如:

VNI=1000可能对应了171.30.0.0/16, 而VNI=1001可能对应了172.31.0.0/16

Linux内核的vxlan支持

2012年10月,Linux内核增加了vxlan支持.
内核的版本要求3.7+, 推荐升级到3.9+.

Linux内核支持vxlan意味着linux系统可以为主机内的虚拟网络提供直接得vxlan服务.
当然,这需要进行一些比较复杂的网络配置,可以通过诸如Flannel的实现来自动完成.

实验:手动配置vxlan网络

asciicast

实验环境:

采用Digital Ocean上的两台CentOS 7 VPS

Hostname OS Kernel et
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值