当我尝试创建 LXD 容器时,我得到:
$ lxc launch ubuntu:
Creating the instance
Instance name is: included-mite
Starting included-mite
Error: Failed pre-start check for device "eth0": Network "lxdbr0" unavailable on this server
确实,网络处于“不可用”状态:
$ lxc network list
+--------+----------+---------+-----------------+---------------------------+-------------+---------+-------------+
| NAME | TYPE | MANAGED | IPV4 | IPV6 | DESCRIPTION | USED BY | STATE |
+--------+----------+---------+-----------------+---------------------------+-------------+---------+-------------+
| lxdbr0 | bridge | YES | 10.238.181.1/24 | fd42:10e8:9fef:5b94::1/64 | | 5 | UNAVAILABLE |
+--------+----------+---------+-----------------+---------------------------+-------------+---------+-------------+
此外,还有一个警告:
$ lxc warning list
+--------------------------------------+-------------------------------------------------+--------+----------+-------+---------+------------------------------+
| UUID | TYPE | STATUS | SEVERITY | COUNT | PROJECT | LAST SEEN |
+--------------------------------------+-------------------------------------------------+--------+----------+-------+---------+------------------------------+
| 0ba1da33-d039-4e63-938b-596deba54394 | Network unavailable | NEW | HIGH | 18675 | default | Sep 11, 2023 at 3:47pm (UTC) |
+--------------------------------------+-------------------------------------------------+--------+----------+-------+---------+------------------------------+
“状态”字段中还有更多确认信息:
$ lxc network show lxdbr0
config:
ipv4.address: 10.238.181.1/24
ipv4.nat: "true"
ipv6.address: fd42:10e8:9fef:5b94::1/64
ipv6.nat: "true"
description: ""
name: lxdbr0
type: bridge
used_by:
- /1.0/instances/included-mite
- /1.0/instances/ipfs
- /1.0/instances/migrate-test
- /1.0/instances/stable-diffusion
- /1.0/profiles/default
managed: true
status: Unavailable
locations:
- none
问题是,我找不到任何关于“不可用”的含义、它是如何发生的,或者我能做什么的文档。
为什么是否不可用?或者,我如何才能知道?
我可以采取什么步骤来使其可用?
谢谢。
答案1
我能够发现为什么通过检查 /var/snap/lxd/common/lxd/logs/lxd.log 发现网络不可用。这就是我需要的指针。
在这种情况下,它报告说:
level=error msg="初始化网络失败" err="启动失败:DNS 和 DHCP 服务过早退出:退出状态 2 ("dnsmasq:无法为 10.238.181.1 创建监听套接字:地址已在使用中")" network=lxdbr0 project=default
我能够使用
netstat -n -t -u -l -p | grep :53
这表明 bind9 (named) 正在尝试监听所有接口,这是默认情况下的做法。我可以通过检查配置到 lxdbr0 的地址来解决此问题
lxc network show lxdbr0
并从 /etc/bind/named.conf.options 中的 bind9 中排除这些地址,如下所示:
listen-on { !10.238.181/24; any; };
listen-on-v6 { !fd42:10e8:9fef:5b94::/64; any; };
不幸的是,您不能指定像 lxdbr0 这样的接口名称,所以这不是一个非常优雅的解决方案,但它解决了我眼前的问题。