LXC avec Open vSwitch

Je veux essayer OVS (switch Linux logiciel) http://openvswitch.org/ avec mon conteneur LXC avec Ubuntu comme hôte et invité. Je l’ai donc installé:

# apt-get install openvswitch-switch 

Configuré selon ce document https://infologs.wordpress.com/2015/06/19/how-to-attach-lxc-container-to-ovs-openvswitch/

  1. Conteneur de test créé:

     # lxc-create -t ubuntu -n veth03-ovs -- -r trusty 
  2. Créé un pont et assigné IP à celui-ci:

     # ovs-vsctl add-br switch0 # ip add add 192.168.100.1/24 dev switch0 

Qu’il soit nouveau réseau 192.168.100.0/24 et switch0 (selon ma compréhension) sera la première adresse (passerelle) là.

Semble bien:

 # ip a ... 4: ovs-system:  mtu 1500 qdisc noop state DOWN group default link/ether 52:9d:e1:60:1d:56 brd ff:ff:ff:ff:ff:ff 5: switch0:  mtu 1500 qdisc noop state DOWN group default link/ether 16:63:eb:47:13:41 brd ff:ff:ff:ff:ff:ff inet 192.168.100.1/24 scope global switch0 valid_lft forever preferred_lft forever 

État de l’interface de pont:

 # ovs-vsctl show 1b236728-4637-42a5-8b81-53d4c93a6803 Bridge "switch0" Port "switch0" Interface "switch0" type: internal ovs_version: "2.3.2" 
  1. Modification du fichier LXC config pour le conteneur veth03-ovs pour l’utilisation de ce pont:

     # vim /var/lib/lxc/veth03-ovs/config ... lxc.network.type = veth lxc.network.flags = up lxc.network.script.up = /etc/lxc/ifup lxc.network.script.down = /etc/lxc/ifdown # lxc.network.veth.pair = lxc0 lxc.network.hwaddr = 00:16:3e:15:b3:62 lxc.network.ipv4 = 192.168.100.10 

Je veux donc pointer 192.168.100.10 pour l’interface interne du conteneur.

/ etc / lxc / ifup et / etc / lxc / ifdown append / supprimer des ports pour ce pont après le démarrage / arrêt du conteneur.

 # cat /etc/lxc/ifup #!/bin/bash BRIDGE=”switch0″ ovs-vsctl –may-exist add-br $BRIDGE ovs-vsctl –if-exists del-port $BRIDGE $5 ovs-vsctl –may-exist add-port $BRIDGE $5 # cat /etc/lxc/ifdown #!/bin/bash ovsBr='switch0′ ovs-vsctl –if-exists del-port ${ovsBr} $5 

Alors maintenant, je veux commencer le conteneur mais obtenir:

 # lxc-start -n veth03-ovs --logfile /tmp/log lxc-start: lxc_start.c: main: 344 The container failed to start. lxc-start: lxc_start.c: main: 346 To get more details, run the container in foreground mode. lxc-start: lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options. # cat /tmp/log lxc-start 1448974395.199 ERROR lxc_conf - conf.c:run_buffer:342 - Script exited with status 1 lxc-start 1448974395.225 ERROR lxc_conf - conf.c:lxc_create_network:3079 - failed to create netdev lxc-start 1448974395.225 ERROR lxc_start - start.c:lxc_spawn:950 - failed to create the network lxc-start 1448974395.225 ERROR lxc_start - start.c:__lxc_start:1213 - failed to spawn 'veth03-ovs' lxc-start 1448974400.730 ERROR lxc_start_ui - lxc_start.c:main:344 - The container failed to start. lxc-start 1448974400.730 ERROR lxc_start_ui - lxc_start.c:main:346 - To get more details, run the container in foreground mode. lxc-start 1448974400.730 ERROR lxc_start_ui - lxc_start.c:main:348 - Additional information can be obtained by setting the --logfile and --logpriority options. 

Je suppose que cette erreur dans les scripts lxc.network.script.up / lxc.network.script.down et ses parameters n’obtiennent pas le paramètre $5 , qui devrait être l’interface intermédiaire transmise par LXC à OVS. Mais je ne suis pas sûr.

Est-ce que LXC prend en charge Open vSwitch? https://github.com/lxc/lxc/issues/256

C’était ma mauvaise Je viens de copier les scripts ifup/ifdown du blog WordPress. Mais il y avait des fautes de frappe:

 ovs-vsctl –may-exist add-br $BRIDGE 

mais devrait être:

 ovs-vsctl --may-exist add-br $BRIDGE 

-- pas seulement - avant may . Le même partout dans les scripts ifup/ifdown . Ils devraient donc ressembler à ceux-ci:

 # cat /etc/lxc/ifup #!/bin/bash BRIDGE=switch0 ovs-vsctl --may-exist add-br $BRIDGE ovs-vsctl --if-exists del-port $BRIDGE $5 ovs-vsctl --may-exist add-port $BRIDGE $5 # cat /etc/lxc/ifdown #!/bin/bash ovsBr=switch0 ovs-vsctl --if-exists del-port ${ovsBr} $5