环境
kolla-ansible
ussuri
集群环境
现象
通过镜像创建虚拟机时(ussuri),选择flat网络,结果创建失败,虚拟机处于关闭/错误状态。
查看日志:
/var/log/kolla/nova/nova-compute.log
/var/log/kolla/neutron/neutron-server.log
nova_compute.log显示,端口绑定失败,大概可知,是由于nova请求neutron失败所致,所以问题在neutron上。
从neutron_server.log的报错信息可以看到一些信息,报错的主体为plugins.ml2.managers,network_type为flat,physical_network为physnet1。
打开neutron.conf (/etc/kolla/neutron-server/neutron.conf)
可以看到driver为openvswitch
查看openvswitch_agent.ini (/etc/kolla/neutron-openvswitch-agent/openvswitch_agent.ini)
可以看到ovs的bridge_mappings为空,其原因是在kolla-ansible部署前,没有在配置文件中指定外部网络接口。我们需要通过手动创建虚拟网桥把flat网络和物理接口连接起来。
解决办法
- 确认flat网络
flat网络名字可以通过ml2_conf.ini (/etc/kolla/neutron-server/ml2_conf.ini)文件确认
- 创建虚拟网桥
进入容器neutron_openvswitch_agent,需要用root角色
docker exec -it -u root bash neutron_openvswitch_agent
在容器中,通过以下openvswitch命令,添加虚拟网桥,并映射到flat网络接口
ovs-vsctl add-br br-ex
ovs-vsctl add-port br-ex physnet1
- 修改openswitch_agent.ini
打开openvswitch_agent.ini (/etc/kolla/neutron-openvswitch-agent/openvswitch_agent.ini)
可以看到bridge_mappings为空。编辑文件,将bridge_mappings的值改为physnet1:br-ex。
其中physnet1表示桥接的物理网卡,br-ex是新建的虚拟网桥。
- 重启容器
docker restart neutron_server neutron_openvswitch_agent
如果使用的是tenant下的网络,还需要注意ml2_conf.ini文件的配置。默认tenant_work_types的值为空,默认tenant下网络不支持任意网络类型,需要修改。
the End