在CentOS7上创建持久化的桥接网络及Guests

上篇文章中用 ip link add name br0 type bridge 创建网桥重启之后就没有了。

添加网桥设备文件

[devops@192 ~]$ touch /etc/sysconfig/network-scripts/ifcfg-br0

配置网桥

[devops@192 ~]$ cat /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.10
PREFIX=24
GATEWAY=192.168.1.1
DNS1=192.168.1.1
NM_CONTROLLED=no

DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no

DEVICE=br0
ONBOOT=yes
[devops@192 ~]$

把网卡挂到网桥
把 em1 网卡 IP 地址配置的部分注释掉(或者 BOOTPROTO=none),并加入 BRIDGE=br0。

[devops@192 ~]$ cat /etc/sysconfig/network-scripts/ifcfg-em1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
IPV6_PRIVACY=no
NAME=em1
UUID=48f1a196-a6ff-4966-8b93-fb0d7b707e47
DEVICE=em1
ONBOOT=yes

#BOOTPROTO=static
#IPADDR=192.168.1.10
#PREFIX=24
#GATEWAY=192.168.1.1
#DNS1=192.168.1.1

NM_CONTROLLED=no
#BRIDGE=br0
[devops@192 ~]$

当前主机路由及网桥接口

[devops@192 ~]$ route -v
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 br0
link-local      0.0.0.0         255.255.0.0     U     1002   0        0 em1
link-local      0.0.0.0         255.255.0.0     U     1004   0        0 br0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
[devops@192 ~]$
[devops@192 ~]$
[devops@192 ~]$ brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.1866daa0cb22    no        em1
virbr0        8000.5254002a0526    yes        virbr0-nic
[devops@192 ~]$

重启网络服务

sudo systemctl restart network

如果再重启网络失败,出现这样的错误 Failed to start LSB: Bring up/down networking。需要检查一下 /etc/sysconfig/network-scripts/ 下面的网络接口文件定义的是不是有问题。我这里因为有双网卡,其中一个的配置出现问题,导致网络服务启动失败。

创建使用 br0 的虚拟机们

有了上面的网桥 br0,我们就可以通过下面的命令分分钟创建出使用 br0 的三台虚拟机。

ansible-playbook  ./virt-infra.yml \
  --limit kvmhost,k8shosts \
  -e virt_infra_root_password=password \
  -e virt_infra_disk_size=100 \
  -e virt_infra_ram=4096 \
  -e virt_infra_ram_max=8192 \
  -e virt_infra_cpus=8 \
  -e virt_infra_cpus_max=16 \
  -e '{ "virt_infra_networks": [{ "name": "br0", "type": "bridge" }] }' \
  -e virt_infra_state=running

登录到创建出来的 k8s_host 虚拟机 ping 局域网及 internet 网络都是通的,证明 br0 桥接工作正常。以后,我们就可以基于这些虚拟机来折腾 K8S 了。。。