阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

多主机Docker容器的VLAN划分

104次阅读
没有评论

共计 2208 个字符,预计需要花费 6 分钟才能阅读完成。

 ovs相对 linux 自身的 brctl 工具 (yum install -y bridge-utils) 功能上丰富许多,如 vlan 功能与分布式功能。

本文主要验证利用 ovsvlan功能实现跨主机的容器隔离与通信。 

一.前置条件 

1. 拓扑图

多主机 Docker 容器的 VLAN 划分

2. 环境说明 

    1. Host1/2VMware ESXi 中的 vm host,安装CentOS-7-x86_64-1511 系统;
    2. 在宿主机 Host1/2 上各创建两个 Container,为Container 创建 eth1 端口;
    3. Containereth1 端口连接到 ovs 网桥,ovs网桥对接 container 的端口分别划分到vlan10/20
    4. 宿主机 Host1/2 的网卡 ens192 分别桥接到各宿主机内部的 ovs 网桥;
    5. 宿主机 Host1/2 的网卡 ens192 需要设置成混杂模式,并且对接的交换机端口设置为 trunk 端口。
    6. 网桥需要安装 bridge-utils 包;
    7. 常规情况下,加入 bridge 网络的宿主机网卡自动进入 promiscuous mode,并进入forwarding state ( 可以使用 dmesg 查看 );但如果宿主机是vm,需要注意调整宿主机的网卡为promiscuous mode,调整 ” 伪传输 ” 模式为 ” 接受 ”,对接虚拟网桥的端口为trunk 端口。如 VMware ESXi 默认拒绝接受混杂模式下的数据包并且不对数据包打 tag;伪传输 ” 模式默认为 ” 拒绝 ” 表示出站数据的源mac 地址不同于 .vmx 文件中的源 mac 地址时,vswitch会丢弃该 出站 数据;”mac地址更改 ” 模式默认为 ” 拒绝 ” 表示 vm 在操作系统层面将网卡的 mac 地址更改为不同于 .vmx 配置文件中的 mac 地址时,丢弃所有 入站 数据。 

3. pipework 

多主机 Docker 容器的 VLAN 划分
#pipework 本质是一个 shell 脚本实现,相对 docker 自身比较薄弱的网络配置处理方式,其可以方便地对 docker 网络进行配置。
[root@localhost ~]# cd /usr/local/
[root@localhost local]# git clone https://github.com/jpetazzo/pipework

#可以使用软连接,复制,或增加环境变量的多种方式将 pipework 设为可执行命令
[root@localhost local]# ln -s /usr/local/pipework/pipework /usr/local/bin/ 
多主机 Docker 容器的 VLAN 划分

一.多主机 Docker 容器的 vlan 划分

以下操作没有特别说明,都表示在 Host1 上操作,Host2按照 Host1 操作微调即可。 

1. 启动容器

#在 Host1/ 2 下启动容器 test1/2/3/4;
#"--net=none" 设置容器启动不带网络,由后期自定义,关于容器网络的模式请参考链接文档 1 
[root@localhost ~]# docker run -itd --net=none --name test1 centoswithssh
[root@localhost ~]# docker run -itd --net=none --name test2 centoswithssh
[root@localhost ~]# docker ps

多主机 Docker 容器的 VLAN 划分 

2. 为容器配置网络

多主机 Docker 容器的 VLAN 划分
#用 pipework 添加 ovs0 网桥,test1 网络划分到 vlan10,test2 网络划分到 vlan20;
#pipework 本质是采用 shell 脚本简化了 ovs 的操作,pipework 及 ovs 的具体操作请参考链接文档 3;
#这里并没有为 ovs0 网桥设置管理 ip,可以根据需要设置,请参考链接 1。
[root@localhost ~]# pipework ovs0 test1 192.168.1.11/24 @10
[root@localhost ~]# pipework ovs0 test2 192.168.1.12/24 @20

[root@localhost ~]# ovs-vsctl show
[root@localhost ~]# docker exec -it test1 ifconfig
多主机 Docker 容器的 VLAN 划分

多主机 Docker 容器的 VLAN 划分

多主机 Docker 容器的 VLAN 划分 

3. 为网桥添加宿主机网卡

#Host1 与 Host2 中的容器需要通信,需要把两边的网络打通,即将宿主机网卡添加到虚拟网桥中
[root@localhost ~]# ovs-vsctl add-port ovs0 ens192
[root@localhost ~]# ovs-vsctl show

4. 验证

[root@localhost ~]# docker exec -it test1 ping 192.168.1.12
[root@localhost ~]# docker exec -it test1 ping 192.168.1.13
[root@localhost ~]# docker exec -it test1 ping 192.168.1.14
[root@localhost ~]# docker exec -it test2 ping 192.168.1.13
[root@localhost ~]# docker exec -it test2 ping 192.168.1.14

预期:

  1. test1 ping test2: fail
  2. test1 ping test3: success
  3. test1 ping test4: fail
  4. test2 ping test3: fail
  5. test2 ping test4: success

根据验证结果显示,结果符合预期,请见截图:

多主机 Docker 容器的 VLAN 划分

多主机 Docker 容器的 VLAN 划分

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-09/146770.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计2208字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中