网卡管理

功能描述

isulad-tools支持将宿主机上的物理网卡或虚拟网卡插入到容器,在不使用网卡的时候从容器中删除归还给宿主机,并且可以动态修改网卡配置。插入物理网卡即把宿主机上一块网卡直接添加到容器中,插入虚拟网卡则需要先创建一对veth pair,之后将一端插入到容器中。

命令格式

  1. isulad-tools [COMMADN][OPTIONS] <container_id>

其中:

COMMAND:网卡管理相关的命令。

OPTIONS:网卡管理命令支持的选项。

container_id:容器id。

参数说明

命令

功能说明

选项说明

add-nic

给容器创建一个网卡。

支持的选项如下:

  • —type:设置网卡类型,当前只支持eth/veth。
  • —name:设置网卡名称,格式为[host:]<container>,host不写是随机名字。
  • —ip:设置网卡IP地址。
  • —mac:设置网卡mac地址。
  • —bridge:设置网卡绑定的网桥。
  • —mtu:设置网卡的mtu值,默认1500。
  • —update-config-only:如果此flag设置了,只更新配置文件,不会实际做添加网卡的动作。
  • —qlen:配置qlen值,默认为1000。

remove-nic

从容器中将网卡删除,还原至宿主机。

支持的选项如下:

  • —type:设置网卡的类型。
  • —name:设置网卡的名称,格式为[host:]<container>。

list-nic

列出容器中所有的网卡。

支持的选项如下:

  • —pretty:按照json格式输出。
  • —filter:按照过滤格式输出,比如—filter ‘{“ip”:”192.168.3.4/24”, “Mtu”:1500}’。

update-nic

更改容器内指定网卡的配置参数。

支持的选项如下:

  • —name:容器内网卡名(必须项)。
  • —ip:设置网卡IP地址。
  • —mac:设置网卡mac地址。
  • —bridge:设置网卡绑定的网桥。
  • —mtu:设置网卡的mtu值。
  • —update-config-only:如果此flag设置了,只更新配置文件,不会实际做更新网卡的动作。
  • —qlen:配置qlen值。

约束限制

  • 支持添加物理网卡(eth)和虚拟网卡(veth)两种类型。
  • 在添加网卡时可以同时对网卡进行配置,参数包括—ip/—mac/—bridge/—mtu/—qlen。
  • 支持最多添加8个物理网卡到容器。
  • 使用isulad-tools add-nic向容器添加eth网卡后,如果不加hook,在容器退出前必须手工将nic删除,否则在host上的eth网卡的名字会被更改成容器内的名字。
  • 对于物理网卡(1822 vf网卡除外),add-nic必须使用原mac地址,update-nic禁止修改mac地址,容器内也不允许修改mac地址。
  • 使用isulad-tools add-nic时,设置mtu值,设置范围跟具体的网卡型号有关。
  • 使用isulad-tools向容器添加网卡和路由时,建议先执行add-nic添加网卡,然后执行add-route添加路由;使用isulad-tools从容器删除网卡和路由时,建议先执行remove-route删除路由,然后执行remove-nic删除网卡。
  • 使用isulad-tools添加网卡时,一块网卡只能添加到一个容器中。

使用示例

  • 启动一个系统容器,指定hook spec为isulad hook执行配置脚本:

    1. [root@localhost ~]# isula run -tid --hook-spec /etc/isulad-tools/hookspec.json --system-container --external-rootfs /root/root-fs none init
    2. 2aaca5c1af7c872798dac1a468528a2ccbaf20b39b73fc0201636936a3c32aa8
  • 添加一个虚拟网卡到容器

    1. [root@localhost ~]# isulad-tools add-nic --type "veth" --name abc2:bcd2 --ip 172.17.28.5/24 --mac 00:ff:48:13:xx:xx --bridge docker0 2aaca5c1af7c
    2. Add network interface to container 2aaca5c1af7c (bcd2,abc2) done
  • 添加一个物理网卡到容器

    1. [root@localhost ~]# isulad-tools add-nic --type "eth" --name eth3:eth1 --ip 172.17.28.6/24 --mtu 1300 --qlen 2100 2aaca5c1af7c
    2. Add network interface to container 2aaca5c1af7c (eth3,eth1) done

    网卡管理 - 图1 说明:
    添加虚拟网卡或物理网卡时,请确保网卡处于空闲状态,添加正在使用的网卡会导致系统网络断开。