在容器內執行 apt-get update 指令時建立 lxc 容器後,openstack ansible 部署失敗

在容器內執行 apt-get update 指令時建立 lxc 容器後,openstack ansible 部署失敗

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 容器的網際網路存取。每個容器應獲得分配給 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

此處未新增正確的名稱伺服器,因為容器 apt 更新失敗。

相關內容