Я пытаюсь получить keepalived, работающий в непривилегированном lxc контейнере, но я получаю следующую ошибку в системном журнале.
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
Что я пропускаю. Я пытался загрузить ip_vs модуль ядра на хосте, но без успеха.
Контейнеры не позволяются загрузочным модулям, поскольку они совместно используют ядро с хост-машиной. Однажды Вы загрузочный модуль на Вашем аппаратном узле, это станет доступным на всех контейнерах. То же правило для виртуализации OpenVZ.
При выполнении LXD, необходимо позволить модулям Ядра Linux быть загруженными контейнером 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
Внутренняя часть контейнер необходимо установить -P
опция к keepalived для использования keepalived правильно.
, Чтобы сделать это на Ubuntu 16.04 можно отредактировать /etc/defaults/keepalived
и установить следующую строку: DAEMON_ARGS="-P"
при использовании liblxc при загрузке модуля ядра на контейнере хоста, необходимо смочь загрузить его в контейнере LXC.