Linux-Container (LXC) unter Red Hat / CentOS EL6 - lxc-create versus libvirt?

13

Es ist schwierig, innerhalb der guten Vorzüge von Red Hat zu bleiben und dennoch die Systemlebensdauer zu planen ...

Ich bin seit über einem Jahr ein Befürworter von Linux Containers (LXC) . Meine anfänglichen Installationen basierten auf Informationen aus Online-Tutorials wie diesem und diesem . Diese zentriert um die lxc-create, lxc-start|stopund lxc-destroyBefehle und die Änderung bestehender OpenVZ - Vorlagen .

Das funktioniert gut und läuft gut in der Produktion. Ich rufe jedoch einige zusätzliche Systeme auf und entscheide mich, Red Hats aktuelle Dokumentation zu Containern in EL6 zu überprüfen. Ich war überrascht, ihre offizielle Haltung dazu zu sehen.

In Bietet RHEL 6 LXC-Tools, die für die Verwendung von Linux-Containern erforderlich sind? , Red Hat beschreibt LXC als Technologie-Vorschau und schlägt die Verwendung von libvirt zur Verwaltung der Erstellung und Verwaltung von Containern vor .

Dennoch befürwortet Oracle eine völlig andere Containerisierungstechnik für sein Unbreakable Linux.

Die libvirt-Methode scheint einige fehlende Funktionen zu haben, aber meine anfängliche Vorgehensweise mit lxc- * -Befehlen war ein bisschen manuell ... Ich kann nicht genau sagen, was richtig ist oder welche "akzeptierten" Mittel zum Verwalten von Containern auf EL6 verwendet werden .

  • Was ist die übliche Weisheit in Bezug auf LXC- und RHEL-ähnliche Systeme heute?
  • Wie setzen Sie sie in Ihrer Organisation um?
  • Gibt es irgendwelche Vorteile für einen Ansatz gegenüber dem / den anderen?
  • Können diese koexistieren?
ewwhite
quelle
1
libvirt hat einen LXC-Containertreiber und steuert ihn nur, es ist keine Virtualisierungs- / Containerisierungslösung per se.
Cristian Ciupitu

Antworten:

7

Was ist die übliche Weisheit in Bezug auf LXC- und RHEL-ähnliche Systeme heute?

Persönlich finde ich das aktuelle Setup etwas mangelhaft. LXC scheint mehr im Vordergrund zu stehen - sicherlich mehr gepflegt.

Wie setzen Sie sie um?

In Bezug auf das Anbieten als Virtualisierungsoption bin ich nicht. Ich finde das aktuelle technologische Setup mangelhaft.

  • Kein Benutzername-Namespace.
  • Bestimmte Mountpunkte kennen keinen Namespace (cgroups, selinux)
  • Werte in / proc sind irreführende Systemglobale, die die Ressourcenpartitionierung in Namespaces nicht berücksichtigen.
  • Unterbrechungsprüfung.

Ich finde es jedoch sehr schön, wenn es darum geht, Anwendungen einzudämmen. Wir verwenden Namespaces und Cgroups direkt, um Netzwerk- und IPC-Ressourcen für bestimmte vom Benutzer ausgeführte Webanwendungen zu enthalten. Wir bieten eine eigene Schnittstelle zur Steuerung an. In RHEL7 erwäge ich, diese Funktionalität in libvirt-lxcdie neueren Versionen der libvirtUnterstützung des Konzepts der Benutzer-ACLs zu verlagern.

Für die Virtualisierung in Bezug auf ein vollständig initialisiertes System warte ich auf das, was in RHEL7 angeboten wird, aber ehrlich gesagt bin ich der Meinung, dass wir eine ausreichend gute Lösung erst sehen, wenn wir eine spätere kleinere Version von RHEL7 haben und dann vielleicht nur auf einem Technologie-Vorschau-Status.

Behalten Sie systemd-nspawnetwas im Auge, das mir in den nächsten 18 Monaten mitgeteilt wird, oder so, es könnte sein, dass es das beste Werkzeug für eine vollständig in Linux enthaltene Virtualisierung ist, sei es, dass die Autoren des Systems klarstellen, dass es momentan nicht sicher ist! Ich wäre nicht überrascht, wenn libvirtTropfen libvirt-lxcirgendwann und bietet nur einen Wrapper systemd-nspawnmit systemd Scheiben definiert.

Seien Sie auch vorsichtig, dass in den letzten 6 Monaten viel darüber geredet wurde, cgroups als Kernel-Programmierschnittstelle und nicht als Dateisystemschnittstelle neu zu implementieren (vielleicht unter Verwendung von Netlink oder etwas, das nicht überprüft wurde), weshalb systemd sehr heiß sein sollte auf dem Schwanz, das sehr schnell richtig zu machen.

Gibt es Vorteile für einen Ansatz gegenüber dem anderen?

Ich denke, die LXC-Option (nicht libvirt-lxc) ist besser gepflegt. Den libvirt-lxcQuellcode gelesen , fühlt es sich gehetzt. Traditionelles LXC hat sicherlich neuere Funktionen, die besser getestet wurden. Für beide ist ein gewisses Maß an Kompatibilität erforderlich, damit das Init-System in ihnen ausgeführt werden kann. Ich vermute jedoch, dass LXC etwas "schlüsselfertiger" ist als die libvirt-lxcOption, insbesondere wenn es darum geht, Distros zum Laufen zu bringen.

Können diese koexistieren?

Sicher, denken Sie daran, dass beide in jeder Hinsicht dasselbe tun. Organisieren von Namespaces, Cgroups und Mount-Punkten. Alle Primitive werden vom Kernel selbst behandelt. Beide lxcImplementierungen bieten lediglich einen Mechanismus für die Anbindung an die verfügbaren Kerneloptionen.

Matthew Ife
quelle
9

Red Hat macht einen enormen Containerisierungsschub. Sie bauen ein ganz neues Produkt, Red Hat Enterprise Linux Atomic Host , darauf auf.

Für einen weniger radikalen Ansatz schauen Sie sich das RHEL7 Beta Resource Management und Linux Containers Guide an . Sie werden bemerken, dass es libvirt-lxc pusht und die lxc-Tools nicht erwähnt.

Sciurus
quelle
1
Danke dafür. Der RHEL Atomic Host scheint sich stark auf Docker.io zu verlassen . Bedeutet das, dass Docker und verwandte Tools der richtige Weg sind?
Ewwhite
Red Hat investiert definitiv stark in Docker, aber sie sind auch die Hauptentwickler von libvirt-lxc. Ich würde mir die Fähigkeiten ansehen, die sie jeweils bieten, und herausfinden, welche Ihren Anforderungen besser entsprechen.
Sciurus
1
Ja @ewwhite Das folgende Redhat-Dokument erwähnt genau das: access.redhat.com/articles/1365153
Susinthiran
1

Die ausführbaren lxc- * -Dateien sind im lxc- Paket in EPEL enthalten . Es ist jedoch die alte "Long Term Support" -Version. Sie haben nicht einmal die Option "-f" in lxc-ls. Ich würde einfach Ubuntu für meine LXC-Hosts installieren.

Die RHEL-Methode zur Verwaltung von LXC scheint über libvirt-lxc zu erfolgen, ist aber anscheinend veraltet .

Es wird darauf hingewiesen, dass Ubuntu viele der neuen lxc / lxd-Entwicklungen unterstützt, während sich Redhat auf KVM und Docker konzentriert.

Lester Cheung
quelle
Die Frage RHEL 6 im Zusammenhang steht die deprecation für RHEL 7 «Die folgenden libvirt-lxc Pakete werden mit Red Hat Enterprise Linux deprecated Start 7.1:» so dies kann verwendet werden
Taharka