一个lxc网络无法启动问题的描述及解决

作者利用lxc进行了大规模集群的部署,在昨天的测试过程中发生了一个不大不小的问题:lxc网络无法启动。

具体表现为:

  1. 重启设备后,lxcbr0网桥消失,ifconfig命令和brctl命令均无法返回有效结果;
  2. 利用 service lxc-net restart 命令无法重启网络,由于作者比较懒惰,忘记了截图,模糊记得具体表现为提示重启lxc网络失败,并提示执行 systemctl status lxc-net.service(加班太晚,脑子浆糊了,不一定完全准确,但是大概是这么个意思);
  3. 输入提示要求的命令 systemctl status lxc-net.service(...大概吧...),返回结果显示 restart failed ,执行记录执行到读取dnsmasq.conf文件的第34行,然后后面就时 code exit 了。

仔细梳理一下,显然当前问题是服务器重启后lxc重新启动lxc网络服务,即为lxc配置网络,具体的来说就是配置一个名为lxcbr0的网桥,启动的lxc容器都将虚拟网卡接到lxcbr0网桥上。而目前通过ifconfig和brctl查询得到的返回结果来看,lxcbr0网桥并没有成功启动。

再来讲讲这个dnsmasq.conf文件,重启lxc网络失败,failed前执行的最后一个动作是读取dnsmasq.conf文件,这个文件路径为 /etc/lxc/dnsmasq.conf ,dnsmasq能够缓存外部DNS记录,同时提供本地DNS解析或者作为外部DNS的代理,即dnsmasq会首先查找 /etc/hosts 等本地解析文件,然后再查找 /etc/resolv.conf 等外部nameserver配置文件中定义的外部DNS。查看dnsmasq.conf文件,里面是之前执行时配置产生的各容器对应的IP地址,由于实在数目庞大,作者没法仔细查验具体问题,盲猜是多次实验测试中配置的IP地址产生了冲突。

问题的解决:直接将 /etc/lxc/ 路径下的dnsmasq.conf文件打开,将里面的内容全部删除,重启服务器。

由于项目对接的需要,作者不得不使用DHCP进行lxc网络配置,否则这个问题可以用直接注释了 /etc/network/lxc-net 文件中的DHCP和dnsmasq相关行,再使用静态配置直接跳过这个问题。

猜你喜欢

转载自blog.csdn.net/goodboydan/article/details/107198245
今日推荐