openstack ansible 创建的容器正在运行,但它们无法访问互联网。当我手动添加路由时,出现以下错误:
Err:1 http://archive.ubuntu.com/ubuntu bionic InRelease
Clearsigned file isn't valid, got 'NOSPLIT' (does the network require authentication?)
# lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
infra1_galera_container-40eb8c2c RUNNING 1 onboot, openstack 192.168.56.232 - false
infra1_glance_container-fe32f950 RUNNING 1 onboot, openstack 192.168.56.194, 10.200.75.51 - false
infra1_heat_api_container-fcdda89c RUNNING 1 onboot, openstack 192.168.56.207 - false
infra1_horizon_container-29382c02 RUNNING 1 onboot, openstack 192.168.56.140 - false
infra1_keystone_container-c4b4bca5 RUNNING 1 onboot, openstack 192.168.56.61 - false
infra1_memcached_container-667ec859 RUNNING 1 onboot, openstack 192.168.56.183 - false
infra1_nova_api_container-6dcd2a9b RUNNING 1 onboot, openstack 192.168.56.114 - false
infra1_placement_container-d9a47077 RUNNING 1 onboot, openstack 192.168.56.218 - false
infra1_rabbit_mq_container-34797cf1 RUNNING 1 onboot, openstack 192.168.56.210 - false
infra1_repo_container-02a62c03 RUNNING 1 onboot, openstack 192.168.56.94 - false
infra1_utility_container-a23621d0 RUNNING 1 onboot, openstack 192.168.56.90 - false
另外我的 lxc 桥有一些不同的网络&并且没有被分配
lxcbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.3.1 netmask 255.255.255.0 broadcast 10.0.3.255
我的 openstack_user_config.yml 定义了 192.168.56.0/24 网络上的所有基础组件。
为什么默认情况下运行剧本时容器无法访问互联网?我遗漏了什么吗?
答案1
通过 lxcbr0 提供对 lxc 容器的 Internet 访问。每个容器应获得分配给 eth0(默认接口)的 IP 10.0.3.0/24 子网。我遇到了同样的问题,这是由于 dnsmasq 不处理发送到 lxcbr0 的 DHCP 请求造成的。重新启动 dnsmasq 即可。以下是我采取的步骤:
检查 DHCP 请求是否由控制器主机上的 tcpdump 处理:
tcpdump -ntv -i lxcbr0
重新启动 dnsmasq:
ps aux | grep dnsmasq
# note pid and copy dnsmasq command
kill dnsmasq-pid
rerun dnsmasq command
或者使用 systemctl start lxc-dnsmasq.service
答案2
应该需要检查/etc/resolv.conf
由于容器下的 apt 更新失败,因此未添加正确的名称服务器。