
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
lxc 컨테이너에 대한 인터넷 액세스는 lxcbr0을 통해 제공됩니다. 각 컨테이너는 eth0(기본 인터페이스)에 할당된 IP 10.0.3.0/24 서브넷을 가져야 합니다. dnsmasq가 lxcbr0으로 전송된 DHCP 요청을 처리하지 않아 발생하는 동일한 문제가 있습니다. dnsmasq를 다시 시작하면 작동합니다. 내가 취한 단계는 다음과 같습니다.
컨트롤러 호스트에서 tcpdump를 사용하여 DHCP 요청이 처리되는지 확인합니다.
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
컨테이너 적절한 업데이트가 실패했기 때문에 올바른 이름 서버가 추가되지 않았습니다.