LXC: systemd stürzt nach dem 19. Container ab

LXC: systemd stürzt nach dem 19. Container ab

Ich verwende LXC auf Archlinux.

Ich habe eine Kombination aus Arch-, Fedora-, Centos-, Debian- und Ubuntu LXC-Containern, die alle auf systemd basieren.

Wenn ich versuche, mehr als 19 LXC-Container zu öffnen, wird der 20. Container gestartet, allerdings ohne dass systemd darin ausgeführt wird. ( ps auxzeigt nur bash, init, und ps)

Ich dachte, dies könnte mit der Anzahl der geöffneten Dateien zusammenhängen, da ein CentOS-Container manchmal „zu viele geöffnete Dateien“ meldet, wenn ich poweroffihn ausführe, während ich eine große Anzahl von LXC-Containern laufen habe. Aber ich habe die Dateilimits erhöhtwie in diesem Link beschrieben, neugestartet und die Änderungen überprüft, aber mein Problem besteht weiterhin.

Was könnte die Ursache dafür sein?

Antwort1

Wenn Ihr Problem bei nicht privilegierten (d. h.: mit Benutzernamensräumen) Containern auftritt, anstatt bei privilegierten (d. h.: Root-) Containern, dann glaube ich, dass dies durch eine eingeschränkte Beschränkung der Nutzung der Inotify-Schnittstelle für denselben Benutzer verursacht wird, der Container ausführt. Anscheinend verlässt sich systemd auf Inotify. Das Debian-Buster-LXC-Paket enthält eine Einstellung, die das Sysctl fs.inotify.max_user_instancesin/etc/sysctl.d/30-lxc-inotify.conf:

# Defines the maximum number of inotify listeners.
# By default, this value is 128, which is quickly exhausted when using
# systemd-based LXC containers (15 containers are enough).
# When the limit is reached, systemd becomes mostly unusable, throwing
# "Too many open files" all around (both on the host and in containers).
# See https://kdecherf.com/blog/2015/09/12/systemd-and-the-fd-exhaustion/
# Increase the user inotify instance limit to allow for about
# 100 containers to run before the limit is hit again
fs.inotify.max_user_instances = 1024

Derentsprechende Dokumentation für diese Einstellungerzählt:

/proc/sys/fs/inotify/max_user_instances
Dies gibt eine Obergrenze für die Anzahl der Inotify-Instanzen an, die pro realer Benutzer-ID erstellt werden können.

Wenn Ihre LXC-Installation eine solche Einstellung nicht enthält, können Sie überprüfen, ob sie einfach auf dem Host ausgeführt wird:

sysctl -w fs.inotify.max_user_instances=1024

wird das Problem beheben.

verwandte Informationen