路由管理

功能描述

isulad-tools工具可以对系统容器进行动态添加/删除路由表。

命令格式

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

其中:

COMMAND:路由管理相关的命令。

OPTIONS:路由管理命令支持的选项。

container_id:容器id。

ARG:命令对应的参数。

接口说明

命令

功能说明

选项说明

参数说明

add-route

将网络路由规则添加到容器中。

支持的选项如下:

—update-config-only:添加此参数,只更新配置文件,不做实际的更新路由表的动作。

参数格式:[{rule1},{rule2}]

rule样例:

‘[{“dest”:”default”, “gw”:”192.168.10.1”},{“dest”:”192.168.0.0/16”,”dev”:”eth0”,”src”:”192.168.1.2”}]’

  • dest:目标网络,如果为空则是默认网关。
  • src:路由源IP。
  • gw:路由网关。
  • dev:网络设备。

remove-route

从容器中删除路由。

支持的选项如下:

—update-config-only:设置此参数,只更新配置文件,不做实际从容器中删除路由的动作。

参数格式:[{rule1},{rule2}]

rule样例:

‘[{“dest”:”default”, “gw”:”192.168.10.1”},{“dest”:”192.168.0.0/16”,”dev”:”eth0”,”src”:”192.168.1.2”}]’

  • dest:目标网络,如果为空则是默认网关。
  • src:路由源IP。
  • gw:路由网关。
  • dev:网络设备。

list-route

列出容器中所有的路由规则。

支持的选项如下:

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

约束限制

  • 使用isulad-tools向容器添加网卡和路由时,建议先执行add-nic添加网卡,然后执行add-route添加路由;使用isulad-tools从容器删除网卡和路由时,建议先执行remove-route删除路由,然后执行remove-nic删除网卡。
  • 向容器内添加路由规则时,需确保所添加的路由规则与容器内现有的路由规则不会产生冲突。

使用示例

  • 启动一个系统容器,指定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. 0d2d68b45aa0c1b8eaf890c06ab2d008eb8c5d91e78b1f8fe4d37b86fd2c190b
  • isulad-tools向系统容器添加一块物理网卡:

    1. [root@localhost ~]# isulad-tools add-nic --type "eth" --name enp4s0:eth123 --ip 172.17.28.6/24 --mtu 1300 --qlen 2100 0d2d68b45aa0
    2. Add network interface (enp4s0) to container (0d2d68b45aa0,eth123) done
  • isulad-tools添加一条路由规则到系统容器,注意格式需按照’[{“dest”:”default”, “gw”:”192.168.10.1”},{“dest”:”192.168.0.0/16”,”dev”:”eth0”,”src”:”192.168.1.2”}]‘来配置。如果dest为空会自动填成default。

    1. [root@localhost ~]# isulad-tools add-route 0d2d68b45aa0 '[{"dest":"172.17.28.0/32", "gw":"172.17.28.5","dev":"eth123"}]'
    2. Add route to container 0d2d68b45aa0, route: {dest:172.17.28.0/32,src:,gw:172.17.28.5,dev:eth123} done
  • 查看容器内是否新增一条路由规则:

    1. [root@localhost ~]# isula exec -it 0d2d68b45aa0 route
    2. Kernel IP routing table
    3. Destination Gateway Genmask Flags Metric Ref Use Iface
    4. 172.17.28.0 172.17.28.5 255.255.255.255 UGH 0 0 0 eth123
    5. 172.17.28.0 0.0.0.0 255.255.255.0 U 0 0 0 eth123