Container auf QEMU laufen lassen

408
Jacob Kopczynski

Ich habe ein Test-Setup. Ich versuche, auf VMs zu wechseln und nicht so viel wie möglich auf Bare Metal. Das vorhandene Setup ist so strukturiert, dass alles innerhalb von Containern (insbesondere LXC) ausgeführt wird, und es wird nicht verschwinden. Wenn überhaupt möglich, möchte ich die vorhandene Struktur auf den VMs verwenden. Der VM-Cluster, in dem andere Dienste ausgeführt werden, ist QEMU.

Naiv erscheint das einfach, aber die letzte Person in meinem Team, die es versuchte, gab es verwirrt auf. Ich möchte also folgendes wissen:

  • Gibt es bekannte Probleme bei der Ausführung von LXC in QEMU-VMs oder virtuellen Maschinen im Allgemeinen?

  • Gibt es Hindernisse, die ich erwarten sollte, und wenn ja, welche?

  • Ist es eher so, dass es Probleme mit unserem idiosynkratischen Setup gibt als allgemeine Kompatibilitätsprobleme?

0

1 Antwort auf die Frage

0
Austin Hemmelgarn

Kompatibilität

Es sollte keine Probleme geben. QEMU unterscheidet sich funktional nicht von normaler Hardware auf dem Gastsystem, und LXC tut nichts, was ein besonderes Verhalten der Hardware erfordert, die QEMU nicht emuliert.

Aber...

Sie möchten dies wahrscheinlich nicht tun, nicht nur, weil dies die Leistung beeinträchtigt, sondern auch das Management erheblich erschwert. Sie sollten wahrscheinlich neu beurteilen, warum Sie der Meinung sind, dass Sie VMs unter den Containern benötigen (oder, noch besser, wenn Sie bereits Container für einen Teil Ihrer Infrastruktur verwenden, warum Sie stattdessen VMs verwenden müssen). Es sei denn, Sie wirklichWenn Sie sich für eine Live-Migration oder eine verbesserte Isolation von Workloads interessieren, die über das hinausgehen, was Container bieten, ist es wahrscheinlich besser, die restliche Infrastruktur nur für die Verwendung von Containern anzupassen, da diese weniger Ressourcen benötigen. Die einzige Ausnahme bilden Systeme, die Dienste bereitstellen, die für die Außenwelt zugänglich sind. Diese sollten sich niemals auf einem gemeinsam genutzten Host befinden, es sei denn, sie befinden sich in einer virtuellen Maschine (da ein Container bei einem Systemabsturz häufig den Host zum Absturz bringt) Im Allgemeinen nicht auf einem gemeinsam genutzten Host mit internen Diensten sein.

OK, aber ich möchte das sowieso wirklich machen.

In diesem Fall müssen Sie Ihre Software so anpassen, dass VMs anstelle von Containern verwendet werden. Realistisch gesehen sollte die Anpassung nicht zu schwer sein. Es ist eigentlich ziemlich einfach, QEMU so einzurichten, dass ein Linux-Kernel direkt gebootet wird (und somit die Notwendigkeit eines Bootloaders und damit der Notwendigkeit einer Partitionstabelle umgeht). Sobald dies möglich ist, kann dieses Container-Basis-Image problemlos in dieses Verzeichnis extrahiert werden ein Dateisystem-Image, das Sie dann direkt als Festplatte verwenden können (dies wäre zwar immer noch eine etwas geringere Leistung als die Container, aber bei weitem nicht so schlimm wie das Ausführen der Container in den VMs).

Ich habe keine Kontrolle über die Maschinen, auf denen die VMs ausgeführt werden, und kann nicht dafür sorgen, dass sie stattdessen Container ausführen. VMs sind keine Option für die zuvor vorhandenen Bare-Metal-Tests. Daher müssen sie weiterhin Container verwenden. Ich möchte dies also tun, weil die Alternative zwei parallele Infrastrukturen umfasst, um dieselben Tests in unterschiedlichen Kontexten auszuführen. Jacob Kopczynski vor 5 Jahren 0