web-dev-qa-db-fra.com

Comment créer un pont secondaire LXD?

Je veux essayer de créer une infrastructure réseau avec des conteneurs, mais comment puis-je configurer un autre pont lxd (par exemple: lxcbr1) pour mon conteneur lxc?

sur l'hôte je tape:

Sudo brctl addbr lxcbr1

mais quand je lance un nouveau conteneur en tapant:

lxc launch images:centos/7/AMD64 MyCentos

ce conteneur prend la configuration du réseau par le pont lxdbr0 par défaut.

2
GabrielMeg

REMARQUE: Le client LXC de l'ordinateur peut utiliser des instances LXC distantes. Tout ce qui est entre crochets [ ] dans les informations d'utilisation doit être ignoré ici, car je vais expliquer ce qu'il faut faire à côté de cela. J'utilise également les commandes launch fournies dans la question du PO, mais vous pouvez utiliser n'importe quelle image de système d'exploitation pour lancer celle que vous souhaitez.

Au lieu d'utiliser brctl directement, puis d'attaquer les configurations de conteneur individuelles, envisagez d'utiliser lxc network create pour cela et de laisser LXD gérer ces ponts. Cela rend la création de ponts vraiment facile et ne nous donne pas autant de maux de tête. (C’est ce que je fais sur plusieurs environnements LXD).

De l'utilisation:

lxc network create [<remote>:]<network> [key=value...]
    Create a network.

Effectivement, faites simplement lxc network create lxcbr1 ou nommez-le.

Le problème est que vous devez spécifier cela quelque part. Personnellement, j'utilise des profils de configuration pour cela, surtout si je dois me lier à plusieurs ponts.

Maintenant, normalement J'ai des profils individuels pour des ponts individuels, et n'en mettez pas deux sur la même boîte, mais dans votre cas, vous aurez deux LXD. définitions de pont. Nous devrons donc créer un profil de configuration pour ceux-ci.


Si vous avez besoin de plusieurs ponts sur le conteneur en même temps ...

Commencez par copier la configuration default dans une configuration multibridge:

lxc profile copy default multibridge

Après cela, nous devons éditer le nouveau fichier multibridge, afin qu’il dispose de plusieurs périphériques réseau.

lxc profile edit multibridge

Vous verrez quelque chose comme ceci dans le fichier:

devices:
  eth0:
    nictype: bridged
    parent: lxdbr0
    type: nic

Créez une nouvelle ligne vide après cette ligne type et ajoutez des lignes pour lui donner l'aspect suivant:

devices:
  eth0:
    nictype: bridged
    parent: lxdbr0
    type: nic
  eth1:
    nictype: bridged
    parent: testing
    type: nic

Ne modifiez rien d'autre dans le fichier et sauvegardez-le.

Maintenant, nous devons dire à LXD de créer un nouveau conteneur, mais pour utiliser le profil multibridge:

lxc launch images:centos/7/AMD64 MyCentos -p multibridge

Cela indiquera à LXD d'utiliser le profil multibridge que nous venons de configurer en tant que profil de configuration pour le nouveau conteneur, et il devrait utiliser à la fois lxdbr0 et lxdbr1 sur eth0 et eth1 respectivement dans le conteneur.

Un inconvénient majeur: Le système n'est pas intelligent et ne configure pas correctement eth1. En tant que tel, vous devez accéder à votre système CentOS et configurer vous-même la configuration de eth1 pour le configurer sur DHCP ou sur des adresses IP statiques dans les plages IP de lxdbr1 config. Sinon, cette interface ne sera jamais évoquée. Comme cette configuration varie d'un système d'exploitation à l'autre, je ne peux pas vous donner de réponse claire sur la configuration de chaque interface réseau sur chaque image. Il existe d'autres ressources disponibles pour cela.


Si vous avez seulement besoin du nouveau pont, et pas plusieurs ponts sur un conteneur à la fois ...

Ensuite, nous devons créer un profil spécialement pour cela.

lxc profile copy default lxdbr1

... Et ensuite éditez ce nouveau profil.

lxc profile edit lxdbr1

... Et une fois dedans, trouvez où lxdbr0 est spécifié et changez-le en lxdbr1.

Et ensuite, comme ci-dessus, lancez votre conteneur LXD et spécifiez le profil lxdbr1.

lxc launch images:centos/7/AMD64 MyCentos -p lxdbr1

Vous n'avez pas besoin de faire de configuration spécialisée pour l'interface réseau, car la valeur par défaut est de définir la première interface sur DHCP, qui configurera automatiquement la configuration correctement.


Juste quelques notes de post-configuration maintenant:

Vous pouvez également réviser tous les éléments réseau individuels si vous connaissez les configurations à entrer en modifiant la configuration réseau lxdbr1 sans utiliser brctl et en appelant simplement lxc network edit lxdbr1 et en ajoutant les configurations individuelles. Cela permet à lxd de tout gérer et ne vous oblige pas à configurer le pont manuellement vous-même avec brctl (et laisse LXD gérer le pont).

Vous voudrez peut-être configurer la configuration réseau de la même manière que ci-dessous, ce qui désactive la procédure automatique NAT et vous oblige à configurer la manière dont les données sont transmises à Internet manuellement pour votre deuxième pont (vous pouvez modifier le pont). se configure via lxc network edit lxdbr1 si vous voulez utiliser lxdbr1 comme nom). Notez l’utilisation de ipv4.nat: "false" ici, qui désactive la règle iptables 'MASQUERADE qui donne l’impression que le système lui-même atteint le trafic sortant:

config:
  ipv4.address: 10.75.251.1/24
  ipv4.dhcp: "true"
  ipv4.dhcp.ranges: 10.75.251.200-10.75.251.250
  ipv4.nat: "false"

Il existe également des commandes équivalentes IPv6, mais IPv4 étant plus facile à utiliser, je l’ignore ici. Une fois que cela est fait, vous devez redémarrer les conteneurs. Surtout depuis que nous mettons tout à dhcp.

3
Thomas Ward