2016-08-23 2 views
0

Я хочу использовать функцию VlanOpenVSwitch. Это то, что я сделал до сих пор;Хотите использовать функцию `Vlan`` OpenVSwitch` с `LXD/LXC`

[email protected]:~$ lxc list 
+----------+---------+------+------+------------+-----------+ 
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | 
+----------+---------+------+------+------------+-----------+ 
| trusty-1 | STOPPED |  |  | PERSISTENT | 0   | 
+----------+---------+------+------+------------+-----------+ 
| trusty-2 | STOPPED |  |  | PERSISTENT | 0   | 
+----------+---------+------+------+------------+-----------+ 
| trusty-3 | STOPPED |  |  | PERSISTENT | 0   | 
+----------+---------+------+------+------------+-----------+ 

и этот;

[email protected]:~$ sudo ovs-vsctl show 
a8498c25-8432-4174-9869-6eae38044cfe 
    Bridge "br0" 
     Controller ptcp 
     Port "vport1" 
      Interface "vport1" 
     Port "enp1s0" 
      Interface "enp1s0" 
     Port "br0" 
      Interface "br0" 
       type: internal 
    ovs_version: "2.5.0" 

В испытанной-1 контейнера у меня есть это;

[email protected]:~# cat /etc/network/interfaces.d/eth0.cfg 
#auto eth0 
#iface eth0 inet static 
#  address 172.16.3.250 
#  netmask 255.255.254.0 
#  gateway 172.16.2.1 


auto eth0 
iface eth0 inet static 
     address 172.16.3.250 
     network 172.16.0.0 
     netmask 255.255.254.0 
     gateway 172.16.2.1 
     dns-nameservers 172.16.3.199 8.8.8.8 
     dns-search google.com 
     bridge_ports vport1 
     bridge_stp off 
     bridge_fd 0 
     bridge_maxwait 0 

То, что я хочу сделать, это что испытанный-1 контейнер использовать vport1 моста порт, так что я могу пометить его, а затем манипулировать ими для последующих будущих дел, но что происходит, вместо того, чтобы это;

[email protected]:~$ sudo ovs-vsctl show 
a8498c25-8432-4174-9869-6eae38044cfe 
    Bridge "br0" 
     Controller ptcp 
     Port "vport1" 
      Interface "vport1" 
     Port vethHBNLTA 
      Interface vethHBNLTA 
     Port "enp1s0" 
      Interface "enp1s0" 
     Port "br0" 
      Interface "br0" 
       type: internal 
    ovs_version: "2.5.0" 

каждый раз, когда я до испытанный-1 временный порт (vethHBNLTA в данном случае) будет создаваться.

Как я могу убедиться, что контейнер испытанной-1 всегда использует vport1?

спасибо.

P.S .: Итак, Бог послал ангела в LXC IRC, чтобы я сказал;

$ lxc config edit trusty-1 

и добавить

eth0: 
    name: eth0 
    nictype: physical 
    parent: vport1 
    type: nic 

под устройств:.

так что я сделал. Но подключение к сети исчезло. Не удалось выполнить пинг с хостом или Google из контейнера.

Итак, я изменил конфигурацию контейнера на это;

devices: 
    eth0: 
    name: eth0 
    nictype: bridged 
    parent: vport1 
    type: nic 

Теперь я не могу даже начать свой контейнер. Журналы ошибок показывают это;

[email protected]:~$ lxc info --show-log trusty-1 
Name: trusty-1 
Architecture: x86_64 
Created: 2016/08/10 06:48 UTC 
Status: Stopped 
Type: persistent 
Profiles: default 

Log: 

      lxc 20160823145623.424 INFO  lxc_start - start.c:lxc_check_inherited:251 - closed inherited fd 3 
      lxc 20160823145623.424 INFO  lxc_start - start.c:lxc_check_inherited:251 - closed inherited fd 8 
      lxc 20160823145623.426 INFO  lxc_container - lxccontainer.c:do_lxcapi_start:797 - Attempting to set proc title to [lxc monitor] /var/lib/lxd/containers trusty-1 
      lxc 20160823145623.427 INFO  lxc_start - start.c:lxc_check_inherited:251 - closed inherited fd 8 
      lxc 20160823145623.428 INFO  lxc_lsm - lsm/lsm.c:lsm_init:48 - LSM security driver AppArmor 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:342 - processing: .reject_force_umount # comment this to allow umount -f; not recommended. 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:446 - Adding native rule for reject_force_umount action 0 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:do_resolve_add_rule:216 - Setting seccomp rule to reject force umounts 

      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:449 - Adding compat rule for reject_force_umount action 0 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:do_resolve_add_rule:216 - Setting seccomp rule to reject force umounts 

      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:342 - processing: .[all]. 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:342 - processing: .kexec_load errno 1. 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:446 - Adding native rule for kexec_load action 327681 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:449 - Adding compat rule for kexec_load action 327681 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:342 - processing: .open_by_handle_at errno 1. 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:446 - Adding native rule for open_by_handle_at action 327681 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:449 - Adding compat rule for open_by_handle_at action 327681 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:342 - processing: .init_module errno 1. 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:446 - Adding native rule for init_module action 327681 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:449 - Adding compat rule for init_module action 327681 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:342 - processing: .finit_module errno 1. 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:446 - Adding native rule for finit_module action 327681 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:449 - Adding compat rule for finit_module action 327681 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:342 - processing: .delete_module errno 1. 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:446 - Adding native rule for delete_module action 327681 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:449 - Adding compat rule for delete_module action 327681 
      lxc 20160823145623.428 INFO  lxc_seccomp - seccomp.c:parse_config_v2:456 - Merging in the compat seccomp ctx into the main one 
      lxc 20160823145623.428 INFO  lxc_conf - conf.c:run_script_argv:367 - Executing script '/usr/bin/lxd callhook /var/lib/lxd 1 start' for container 'trusty-1', config section 'lxc' 
      lxc 20160823145623.429 INFO  lxc_start - start.c:lxc_check_inherited:251 - closed inherited fd 3 
      lxc 20160823145623.429 INFO  lxc_start - start.c:lxc_check_inherited:251 - closed inherited fd 8 
      lxc 20160823145623.431 INFO  lxc_monitor - monitor.c:lxc_monitor_sock_name:178 - using monitor sock name lxc/d78a9d7e97b4b375//var/lib/lxd/containers 
      lxc 20160823145623.451 DEBUG lxc_start - start.c:setup_signal_fd:289 - sigchild handler set 
      lxc 20160823145623.451 DEBUG lxc_console - console.c:lxc_console_peer_default:469 - no console peer 
      lxc 20160823145623.451 INFO  lxc_start - start.c:lxc_init:488 - 'trusty-1' is initialized 
      lxc 20160823145623.451 INFO  lxc_confile - confile.c:config_idmap:1500 - read uid map: type u nsid 0 hostid 165536 range 65536 
      lxc 20160823145623.451 INFO  lxc_confile - confile.c:config_idmap:1500 - read uid map: type g nsid 0 hostid 165536 range 65536 
      lxc 20160823145623.452 DEBUG lxc_start - start.c:__lxc_start:1326 - Not dropping cap_sys_boot or watching utmp 
      lxc 20160823145623.452 INFO  lxc_start - start.c:resolve_clone_flags:1013 - Cloning a new user namespace 
      lxc 20160823145623.487 ERROR lxc_conf - conf.c:instantiate_veth:2595 - failed to attach 'veth1SE4RV' to the bridge 'vport1': Operation not permitted 
      lxc 20160823145623.512 ERROR lxc_conf - conf.c:lxc_create_network:2872 - failed to create netdev 
      lxc 20160823145623.512 ERROR lxc_start - start.c:lxc_spawn:1080 - failed to create the network 
      lxc 20160823145623.512 ERROR lxc_start - start.c:__lxc_start:1353 - failed to spawn 'trusty-1' 
      lxc 20160823145623.512 INFO  lxc_conf - conf.c:run_script_argv:367 - Executing script '/usr/share/lxcfs/lxc.reboot.hook' for container 'trusty-1', config section 'lxc' 
      lxc 20160823145624.015 INFO  lxc_conf - conf.c:run_script_argv:367 - Executing script '/usr/bin/lxd callhook /var/lib/lxd 1 stop' for container 'trusty-1', config section 'lxc' 
      lxc 20160823145624.087 WARN  lxc_commands - commands.c:lxc_cmd_rsp_recv:172 - command get_cgroup failed to receive response 
      lxc 20160823145624.087 WARN  lxc_commands - commands.c:lxc_cmd_rsp_recv:172 - command get_cgroup failed to receive response 
      lxc 20160823145624.093 INFO  lxc_confile - confile.c:config_idmap:1500 - read uid map: type u nsid 0 hostid 165536 range 65536 
      lxc 20160823145624.093 INFO  lxc_confile - confile.c:config_idmap:1500 - read uid map: type g nsid 0 hostid 165536 range 65536 
      lxc 20160823145635.567 INFO  lxc_confile - confile.c:config_idmap:1500 - read uid map: type u nsid 0 hostid 165536 range 65536 
      lxc 20160823145635.567 INFO  lxc_confile - confile.c:config_idmap:1500 - read uid map: type g nsid 0 hostid 165536 range 65536 
      lxc 20160823145635.575 INFO  lxc_confile - confile.c:config_idmap:1500 - read uid map: type u nsid 0 hostid 165536 range 65536 
      lxc 20160823145635.575 INFO  lxc_confile - confile.c:config_idmap:1500 - read uid map: type g nsid 0 hostid 165536 range 65536 

В журналах наступает линия;

Failed to attach 'veth1SE4RV' to the bridge 'vport1': Operation not permitted 

Имеет ли это какое-то отношение к каким-либо разрешениям?

ответ

1
  1. Набор vport1 типа для внутренней, по doint так, ОВС создаст виртуальный интерфейс vport1. Пожалуйста, убедитесь, что вы можете увидеть интерфейс с помощью ip link show перед созданием Lxc контейнера
  2. Набора lxc.network.type к phys, так LXC будет использовать существующий интерфейс vport1 созданного овсом вместо создания нового интерфейса
+0

'lxc.network.type' в'/etc/lxc/default.conf'? – Nagri

+0

нет, измените конфигурацию типа nic –

0

Поэтому после многих ударов и попыток я как-то сумел сделать то, что хотел.Для кого-то, кто приходит сюда в будущем с такой же проблемой, я оставляю вам это.

Для подключения контейнера с существующим интерфейсом к этому:

  1. Создание моста на хосте, позволяет называть его br0.
  2. Создайте виртуальный интерфейс на хосте с типом internal, позвоните ему vport. это будет делать ovs-vsctl add-port br0 vport -- set interface vport type=internal
  3. сделать $ lxc config edit <containername> и под устройством поставить это

    eth0: name: eth0 nictype: physical parent: vport type: nic

Это та часть, которая говорит LXC использовать VPort как интерфейс.

Это все, что вам нужно сделать, чтобы сделать эту работу.

Хотя падение пакета внутри контейнера было огромным с этой конфигурацией, и это заставило меня пойти на второй вариант, который выглядит следующим образом.

Для того, чтобы ваш контейнер создать свой собственный виртуальный интерфейс

  1. Создание моста на хосте, позволяет называть его br0.
  2. сделать $ lxc config edit <containername> и под устройством поставить это

    eth0: host_name: vport name: eth0 nictype: bridged parent: br0 type: nic

Что это делает каждый раз, когда LXC перезапускает он создает свой собственный интерфейс, но каждый раз, когда имя интерфейса является vport.

Пакеты в этой конфигурации не были такими, поэтому я собираюсь с этим.

0

Намного проще решение было найдено:

ovs-vsctl add-br vlan418 vm-bridge 418 

vlan418 это имя поддельного моста, которая будет создана и vm-bridge основным мостом, который связан с физическим NIC хозяина VM. 418 - идентификатор vlan.

Затем в LXD конфигурации контейнера:

devices: 
    eth0: 
    name: eth0 
    nictype: bridged 
    parent: vlan418 
    type: nic 

Вот так. Он работает безупречно. add-br создает поддельный мост, и OpenVSwitch автоматически создает требуемый порт, когда lxd пытается подключить порт к поддельному мосту vlan418.

Смежные вопросы