Como posso criar uma ponte lxd secundária?

1

Eu quero tentar criar uma infraestrutura de rede com contêineres, mas como posso configurar outra ponte lxd (por exemplo: lxcbr1) para meu contêiner lxc?

no host que eu digito:

sudo brctl addbr lxcbr1

mas quando eu inicio um novo contêiner digitando:

lxc launch images:centos/7/amd64 MyCentos

este contêiner assume a configuração de rede por padrão como ponte lxdbr0.

    
por GabrielMeg 25.11.2017 / 16:46

1 resposta

2
  

NOTA: O cliente LXC no computador é capaz de usar instâncias remotas do LXC. Qualquer coisa entre colchetes [ ] nas informações de uso aqui deve ser ignorada, pois explicarei o que fazer ao lado dela. Eu também uso os comandos launch fornecidos pela pergunta do OP, mas você pode usar qualquer imagem do sistema operacional para iniciar o que quiser.

Em vez de usar brctl diretamente e depois mexer com configurações de contêiner individuais, considere usar lxc network create para fazer isso e deixar o LXD gerenciar essas pontes. Isso torna a criação de pontes realmente fácil e não nos dá dores de cabeça. (Isso é o que eu faço em vários ambientes LXD).

A partir do uso:

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

Efetivamente, basta fazer lxc network create lxcbr1 ou o que você quiser nomear.

O problema é que você tem que especificar isso em algum lugar. Eu pessoalmente uso perfis de configuração para isso, especialmente se eu tiver que me ligar a várias pontes.

Agora, normalmente eu tenho perfis individuais para pontes individuais, e não coloquei dois na mesma caixa, mas no seu caso você terá duas definições de ponte LXD. Então, vamos precisar criar um perfil de configuração para eles.

Se você precisar de várias pontes no contêiner ao mesmo tempo ...

Comece copiando o default config para um multibridge config:

lxc profile copy default multibridge

Depois disso, precisamos editar o novo arquivo multibridge, para que ele tenha vários dispositivos de rede.

lxc profile edit multibridge

Você verá algo assim no arquivo:

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

Crie uma nova linha em branco depois da linha type e adicione linhas para que fique assim:

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

Não edite mais nada no arquivo e salve-o.

Agora, precisamos dizer ao LXD para criar um novo contêiner, mas usar o perfil multibridge :

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

Isso dirá ao LXD para usar o perfil multibridge que acabamos de configurar como o perfil de configuração para o novo contêiner, e deve usar lxdbr0 e lxdbr1 on eth0 e eth1 respectivamente dentro do recipiente.

Uma advertência principal: O sistema não é inteligente e não configura eth1 corretamente. Como tal, você precisa entrar em seu sistema CentOS e configurar a configuração para eth1 , para configurá-lo para DHCP ou IPs estáticos dentro dos intervalos de IPs do lxdbr1 config. Caso contrário, essa interface nunca será criada. Como esta configuração irá variar de SO para SO, não posso dar uma resposta clara aqui sobre como configurar cada interface de rede em cada imagem. Há outros recursos disponíveis para isso.

Se você precisa apenas da nova ponte e de não várias pontes em um contêiner de cada vez ...

Então precisamos criar um perfil para isso especificamente.

lxc profile copy default lxdbr1

... E edite esse novo perfil.

lxc profile edit lxdbr1

... e uma vez lá, encontre onde lxdbr0 está especificado e mude para lxdbr1 .

E, como acima, inicie o seu contêiner LXD e especifique o perfil lxdbr1 para ele.

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

Você não precisará fazer nenhuma configuração especializada para a interface de rede, pois o padrão é definir a primeira interface para o DHCP e a autoconfiguração correta.

Apenas algumas notas de pós-configuração agora:

Você também pode revisar todos os elementos de rede individuais se conhecer as configurações para inserir editando a configuração de rede lxdbr1 sem usar brctl e apenas chamar lxc network edit lxdbr1 e adicionar as configurações individuais. Isso permite que lxd realmente manipule tudo e não faça com que você tenha que configurar manualmente a ponte com brctl (e permite que o LXD gerencie a ponte).

Você pode querer configurar a rede similar a abaixo, o que desativa o NAT automático e faz com que você configure como os dados fluem para a Internet manualmente para sua segunda ponte (você pode fazer alterações na configuração da ponte via lxc network edit lxdbr1 se você quisesse usar lxdbr1 como nome. Observe o uso de ipv4.nat: "false" aqui, que desativa a regra iptables ' MASQUERADE que faz com que pareça que o próprio sistema está alcançando a saída:

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"

Também há comandos equivalentes ao IPv6, mas o IPv4 é mais fácil de trabalhar, então omito isso aqui. Feito isso, você precisa reinicializar os contêineres. Especialmente desde que definimos tudo para dhcp .

    
por Thomas Ward 25.11.2017 / 17:51