Executando keepalived com vrrp no contêiner lxc não privilegiado

2

Estou tentando executar um keepalive em um contêiner lxc não privilegiado, mas recebo o seguinte erro no syslog.

May  8 10:56:01 dnsmasq Keepalived_vrrp[11025]: Initializing ipvs 2.6
May  8 10:56:01 dnsmasq modprobe: ERROR: ../libkmod/libkmod.c:556 kmod_search_moddep() could not open moddep file '/lib/modules/4.4.0-22-generic/modules.dep.bin'
May  8 10:56:01 dnsmasq Keepalived_vrrp[11025]: IPVS: Can't initialize ipvs: No space left on device

O que estou perdendo? Tentei carregar o módulo do kernel ip_vs no host, mas sem sucesso.

    
por loewexy 08.05.2016 / 11:02

2 respostas

2

Os contêineres não podem carregar módulos enquanto compartilham o kernel com a máquina host. Depois de carregar o módulo no seu nó de hardware, ele ficará disponível em todos os contêineres. A mesma regra é para a virtualização do OpenVZ.

    
por glorg 02.12.2016 / 20:26
1

Se você estiver executando o LXD, precisará permitir que os módulos do Kernel do Linux sejam carregados pelo contêiner LXC.

lxc config set CONTAINERNAME linux.kernel_modules ip_vs_wrr,ip_vs_wlc,ip_vs_sh,ip_vs_sed,ip_vs_rr,ip_vs_nq,ip_vs_lc,ip_vs_lblcr,ip_vs_lblc,ip_vs_ftp,nf_nat,ip_vs_dh,ip_vs,nf_conntrack,libcrc32c

Dentro do contêiner, você precisa definir a opção -P para continuar usando para usar o keepalived corretamente.

Para fazer isso no Ubuntu 16.04, você pode editar /etc/defaults/keepalived e definir a seguinte linha: DAEMON_ARGS="-P"

Se você usar o liblxc se você carregar o módulo do kernel no container do host, você deve ser capaz de carregá-lo dentro do container LXC.

    
por David Negreira 28.03.2018 / 12:11