macvtap使用教程

本文介绍了macvtap在网络虚拟化中的应用,包括如何在kubernetes环境中使用,以及通过qemu和libvirt配置虚拟机网络。通过macvtap简化了传统Linux TAP设备加Bridge的组合,支持802.1 Qbg。文中详细阐述了启动虚拟机的步骤,如修改虚拟机密码,配置虚拟机IP,解决SSH连接问题,并提供了cloud-init进行自动化配置的方法。还讨论了使用qemu命令行直接创建macvtap设备的操作,以及遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kubernetes一键安装

macvtap是虚拟机网络虚拟化常用的一种技术,当然容器也可以用. MACVTAP 的实现基于传统的 MACVLAN. 和 TAP 设备一样,每一个 MACVTAP 设备拥有一个对应的 Linux 字符设备,并拥有和 TAP 设备一样的 IOCTL 接口,因此能直接被 KVM/Qemu使用,方便地完成网络数据交换工作. 引入 MACVTAP 设备的目标是:简化虚拟化环境中的交换网络,代替传统的 Linux TAP 设备加 Bridge 设备组合,同时支持新的虚拟化网络技术,如 802.1 Qbg.

如kata的虚拟化网络就用了这个技术,以下实践完就会对kata的网络原理比较清楚了,建议对照教程动手实践.

实验环境介绍

此图非常重要,读整篇文章最好脑海里都有

初始化环境

qemu libvirt环境

我已经做好了qemu libvirt的镜像,大家可以直接使用:在容器中有非常多的好处,环境如果乱了可以快速恢复干净的环境。使用设备对也可减少对宿主机网络的影响。

docker run -d --privileged -v /dev:/dev -v /home/fanux:/root --name qemu-vm fanux/libvirt:latest init

注意:

  1. 网络等操作需要容器有特权模式
  2. tap网络需要挂载/dev目录
  3. /home/fanux可以作为工作目录,镜像自己编写的libvirt配置等放在里面防止删除容器后丢失
  4. 由于libvirt需要systemd所以我们在容器中启动init进程

也可自己构建镜像,我提供了一个Dockerfile, -j参数根据你机器CPU来设置编译时的线程数:

FROM centos:7.6.1810
RUN yum install -y wget && wget https://download.qemu.org/qemu-4.0.0.tar.xz && \
    tar xvJf qemu-4.0.0.tar.xz  \
    && yum install -y automake gcc-c   gcc make autoconf libtool gtk2-devel \
    && cd qemu-4.0.0 \
    && ./configure \
    && make -j 72 && make install \
    && yum install -y bridge-utils && yum install -y net-tools tunctl iproute && yum -y install openssh-clients \
    cd .. && rm qemu-4.0.0.tar.xz && rm -rf qemu-4.0.0
RUN yum install -y libvirt virt-manager gustfish openssh-clients

虚拟机镜像

进入容器

[root@compute84 libvirt]# docker exec -it qemu-vm bash
bash-4.2# cd
bash-4.2# ls
CentOS-7-x86_64-GenericCloud.qcow2     centos.qcow2        image    nohup.out    start.sh  vm3.xml
CentOS-7-x86_64-Minimal-1810.iso       cloud-init-start.sh  kernel   qemu    vm.xml
Fedora-Cloud-Base-30-1.2.x86_64.qcow2  destroy.sh        libvirt  run.sh    vm2.xml

下载虚拟机镜像:

openstack已经提供很多已经装过cloud-init的镜像,地址:https://docs.openstack.org/image-guide/obtain-images.html

我用的一个比较新的centos的qcow2格式镜像:

wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1905.qcow2

修改虚拟机root密码:

virt-customize -a CentOS-7-x86_64-GenericCloud.qcow2 --root-password password:coolpass

启动虚拟机

查看容器网络信息:

bash-4.2# systemctl start libvirtd
bash-4.2# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值