Virtualisierung • Dominik's Blog https://dominikkleidt.de Ein IT Blog für alle Fri, 29 Dec 2023 14:21:41 +0000 de hourly 1 https://wordpress.org/?v=6.6.2 Die Evolution der Virtualisierung: Warum Container die Zukunft sind https://dominikkleidt.de/2023/12/26/container/ https://dominikkleidt.de/2023/12/26/container/#respond Tue, 26 Dec 2023 11:57:00 +0000 https://dominikkleidt.de/?p=385 Ziel des Beitrages Heute möchte ich dir Container näherbringen.Dabei beleuchten wir, was Container sind, weshalb man diese verwendet und welche Vor-und Nachteile diese mit sich bringen.Für Verständniszwecke werden nicht alle Begriffe vertieft, falls Interesse da ist, kann dies in einem... Weiterlesen →

The post Die Evolution der Virtualisierung: Warum Container die Zukunft sind first appeared on Dominik's Blog.

]]>
Ziel des Beitrages

Heute möchte ich dir Container näherbringen.
Dabei beleuchten wir, was Container sind, weshalb man diese verwendet und welche Vor-und Nachteile diese mit sich bringen.
Für Verständniszwecke werden nicht alle Begriffe vertieft, falls Interesse da ist, kann dies in einem eigenen Beitrag beleuchtet werden.

Was sind Container?

Im letzten Beitrag haben wir das Thema virtuelle Maschinen angeschnitten, doch hier muss immer das Betriebssystem virtualisiert werden.
Das bedeutet, man hat nicht immer die gleiche Umgebung. Was ist also, wenn man die Anwendung (Applikation) nimmt und diese „virtualisiert“?

Dabei werden Bestandteile einer Anwendung in einen „Behälter“ gegeben.
Dieser Behälter kann dann immer wieder „schnell“ neu „ausgepackt“ werden, und das mit dem gleichen Zustand wie es „verpackt“ wurde.
Ähnlich wie reale Container funktionieren.

Man gibt etwas rein und nimmt es im gleichen Zustand wie es rein gegeben wurde wieder raus.
Container kann man als Weiterentwicklung von Virtualisierung ansehen, da du es auf die Basics hiervon aufbaust.

Deshalb verwendet man Container

Container haben viele Gründe.
Die beiden Wichtigsten sind, dass Anwendungsstacks (Applications stacks) schnell, einfach und immer gleich deployed (bereitgestellt) werden können.

Damit ist gemeint, dass ich einen Zusammenschluss von Anwendungen habe, die zusammenarbeiten müssen, um diese effizient aufsetzen zu können.
Gleichzeitig verwenden Container ein „eigenes“ Netzwerk, welches getrennt von der „Host“ Maschine ist.
Mit Host Maschine ist die Maschine gemeint, auf der du deine Container betreibst.
Grade Anwendungsentwickler, die oft und schnell eine neue Umgebung brauchen, haben hierdurch die Option unabhängig von Infrastruktur Technikern zu arbeiten.

Denn wenn die Entwicklung und Testumgebung bereits als Container Verbund verfügbar ist, kann der Entwickler sich eine Umgebung selbst aufbereiten.

Das ist grade für Unternehmen praktisch, da die Entwickler so effizienter arbeiten können und die Infrastruktur Techniker (auch gerne IT-Administrator oder System Engineer genannt) weniger ausgelastet werden und an ihren eigenen Projekten arbeiten können.
Doch nicht nur für Entwickler, sondern auch für Privatkunden und Unternehmen ist das interessant.
Einige Hersteller, wie z.B. Bitwarden, erlauben eine selbst betriebene Instanz des Password Managers.

Hierzu wird von Bitwarden die Installation über Container empfohlen und auch als einzige Installationsmöglichkeit supportet.
Denn wie bereits angemerkt, werden die Container Umgebungen vorbereitet paketiert und als Kunde erhält man sofort eine Installation wie vom Hersteller gedacht.

Bitwarden verwendet als Beispiel 11 verschiedene Container.
Dazu gehören auch ein Webserver und die Datenbank.
Also können ganze Dienste „containerisiert“ werden.
Hierzu wird von Bitwarden die Installation über Container empfohlen und auch als einzige Installationsmöglichkeit supportet.

Du kannst auch Container verwenden

Um Container zu verwenden, erfordert es nicht viel.
Du benötigst „nur“ einmal die eingeschaltete Funktion der Virtualisierung deiner Hardware und du musst dich für eine Container Basis entscheiden.

Den Container gibt es in einigen technischen Geschmacksrichtungen.
Die Bekanntesten sind Docker, Podman und LXC, dabei sei erwähnt, dass es noch einige mehr gibt.
Doch diese 3 sind soweit ich weiß, am meisten bekannt und verbreitet.

Container können auf fast allem betrieben werden, sei es auf einem PC, Laptop, Single Board Computer (SBC) ebenso auf einem Raspberry Pi oder auch auf Mini PCs.
Es gibt also keinen Grund es nicht auszuprobieren!
Ein beliebtes Projekt wie Bitwarden oder Pi-Hole sind auch als Container Installation verfügbar.

Attribute aká Vor-&-Nachteile von Container

Natürlich wie immer gibt es beides, wobei ich den Begriff Attribute bevorzuge.
Wir kennen es jede Stärke kann im falschen Kontext eine Schwäche sein.
Eine Schwäche wiederrum im richtigen Kontext als Stärke.

Nachteile

Zu den Nachteilen von Containern zählen, wie bei der Virtualisierung, dass diese nicht die gleiche Performance liefern, wie, als würde die Anwendung direkt auf einem Rechner laufen.

Das liegt an verschiedenen Faktoren, wie bei der „klassischen“ Virtualisierung, einer ist das immer erst auf Hardwareebene die Instruktionen abgearbeitet werden müssen und dann erst in den Container übergeben werden können.
Anmerkung: Man kann auch Container in einer VM verwenden, das nennt man dann Nested Virtualization.

Container Verbünde/Stacks können „schnell“ unübersichtlich werden.
Grade wenn man viele Container verwendet, muss eine Ordnung vorhanden sein.
Dies ist für Menschen allgemein nicht einfach umsetzbar, daher wird bei einer größeren Anzahl von Containern empfohlen eine „Verwaltung/Orchestration“ einzubinden.
Dieser kann nicht nur Übersicht liefern, sondern bietet meistens eine grafische Oberfläche, wodurch man auch weniger auf der Kommtandozeile Unterwegs sein muss.

Solange Container aus einem bekannten und vertrauenswürdigen Repository (kurz Repo), also ein Verzeichnis, verwendet wird, kann man davon ausgehen, dass die Container nicht schädlich sind.
Doch man kann auch „unbekannte“ oder „nicht signierte/kontrollierte“ Repos verwenden.
Das kann verschiedenste Gründe haben und birgt wie immer die Vertrauensfrage.
Daher ist hier zu empfehlen, grade am Anfang, nur offizielle Repositories zu verwenden, die von der Containertechnologie empfohlenen werden.

Ein weiterer Nachteil ist, dass Container dazu treiben, trotz ihrer Isolierung, die Sicherheit zu vernachlässigen.

Das geschieht grade deswegen, weil Container zwar isoliert laufen, doch entweder mit anderen Containern kommunizieren oder auch durch ein Komplimentieren der Host Maschine angegriffen werden können.

Auch werden Anwendungen im ersten Schritt auf Effizienz ausgelegt und nicht auf Sicherheit, was problematisch werden kann.
Grade wenn man nicht weiß, wie Container abgesichert werden können oder wenn die Anwendung auch als Stand Alone bzw. als nicht Container Installation angeboten werden.

Wichtig ist auch das Container „flüchtig“ sind, das heißt, dass im Standard beim „Herunterfahren“ von einem Container nicht nur der Container verworfen wird, sondern auch alle Daten die IM Container angefallen sind. Das können Dateien sein oder auch Konfigurationen.
Denn Container kommen in einem „Ready to Config“ Zustand, was bedeutet initial muss die Config selbst vorgenommen werden, was meist durch Interaktive Container Skripte oder grafische Oberflächen bewerkstelligt wird.

Man kann jedoch mit zusätzlichen Konfigurationen so genannte „persistent Mounts“ Punkte definieren.
Hier werden Daten aus dem Container mit einer Speicherlokation auf dem Host gespiegelt.
Bei Docker gibt es zusätzlich zu „persistent Mounts“ sogenannte Docker Volumens.

Vorteile

Wie bereits mehrmals erwähnt sind Container schnell und einfach aufgesetzt, wodurch der Betrieb effizient aufgenommen werden kann.
Das macht es grade für „Einsteiger“ und Entwickler einfacher Infrastrukturen zu betrieben.
Grade hierdurch sind auch „Updates“ einfacher, denn ich kann den Container verwerfen und die neuste Version des Container Image beziehen und diese ausspielen.
Habe ich noch „persistent Mounts“ definiert, wird automatisch z.B. meine Konfiguration eingespielt, oder auch meine abgelegten Daten. Der Wartungs- und Verwaltungsaufwand für die Anwendung selbst ist somit gesunken.

Grade weil Container isoliert sind, ist das Thema Debugging (Fehlersuche) vereinfacht, da man schneller herausfindet welche Komponente der Anwendung einen Fehler hat.
Dadurch können effizienter Lösungen und „Fixes“ eingespielt werden.
Auch ist es praktisch das hierdurch nicht direkt die gesamte Anwendung Probleme hat, sondern nur ein Teil.
Es kommt natürlich darauf an welchem Teil, dennoch ist es praktisch, wenn z.B. mein API Schnittstelle Container Probleme hat, ich dennoch auf den Webserver zugreifen kann.

Skalierbarkeit ist bei Servern und Anwendungen immer ein Thema und Container sind äußerst skalierbar.
Damit ist gemeint, wenn meine Anwendung anfänglich gut performant und mit der Zeit dem Andrang von Anfragen nicht gewachsen ist, kann eine weiterer Container (Stack) erstellt werden der mit dem vorherigen Container zusammen im Verbund arbeitet.

Der wohl signifikanteste Vorteil ist, dass Container Plattform unabhängig sind.
Bedeutet, wenn meine Anwendung als Container vorhanden ist, kann diese unabhängig vom Betriebssystem angeboten werden.
Lediglich die Containertechnologie muss unterstützt werden, jedoch muss die Anwendung nicht für mehrere Plattformen umgeschrieben werden.
Somit sinkt natürlich der Aufwand der Entwicklung.

Meine Meinung

Aus meiner Sicht bergen Container ein großes Potenzial, weshalb ich es als Schritt in Richtung Zukunft sehe.
Dadurch werden Virtuelle Maschinen jedoch nicht ersetzt, sondern ergänzt aus meiner Sicht.
Denn nicht jede Anwendung lässt sich als Container anbieten und das kann verschiedenste Gründe haben.

Auch das Umgebungen durch Container immer „gleich“ auf Anwendungsebene sind, finde ich klasse. Denn somit ist die Fehlerquote automatisch gesenkt, weshalb viele Unternehmen oder auch Privatpersonen in den Genuss von Anwendungen kommen können, ohne zu tief in die Materie der Anwendung zugehen.
Die Tatsache, dass ein Raspberry Pi in der Lage ist, je nach Anwendungen, 6 Container oder mehr gleichzeitig laufen lassen kann ist faszinierend.

The post Die Evolution der Virtualisierung: Warum Container die Zukunft sind first appeared on Dominik's Blog.

]]>
https://dominikkleidt.de/2023/12/26/container/feed/ 0
Virtuelle Maschinen (VM’s), nutze deine Ressourcen vielseitig und effizient https://dominikkleidt.de/2023/12/21/virtuelle-maschinen-vms-nutze-deine-ressourcen-vielseitig-und-effizient/ https://dominikkleidt.de/2023/12/21/virtuelle-maschinen-vms-nutze-deine-ressourcen-vielseitig-und-effizient/#respond Thu, 21 Dec 2023 11:52:00 +0000 https://dominikkleidt.de/?p=383 Ziel des Beitrages Der Begriff virtuelle Maschinen (VM’s) engl. Virtual Machine oder auch kurz VM ist dir bestimmt schon über den Weg gelaufen.Falls nicht, wird es Zeit! Ich will dir näher bringen was VMs sind, welche Vorteile diese bringen und... Weiterlesen →

The post Virtuelle Maschinen (VM’s), nutze deine Ressourcen vielseitig und effizient first appeared on Dominik's Blog.

]]>
Ziel des Beitrages

Der Begriff virtuelle Maschinen (VM’s) engl. Virtual Machine oder auch kurz VM ist dir bestimmt schon über den Weg gelaufen.
Falls nicht, wird es Zeit!

Ich will dir näher bringen was VMs sind, welche Vorteile diese bringen und wie du noch heute einen Nutzen daraus für dich ziehen kannst.

Auch dieser Beitrag soll eine Grundlage schaffen, Vertiefungen in Fachbegriffe werden bei Interesse oder Erfordernis in einem eigenen Beitrag behandelt.

Was sind virtuelle Maschinen (VM’s)?

Virtuelle Maschinen sind, wie es der Name schon sagt Maschinen, die nicht physisch vorhanden sind, sondern digital.

Damit ist gemeint, dass in einer physischen Maschine, z.B. deinem PC oder Laptop, eine digitale bzw. virtuelle Maschine läuft. Dabei werden Ressourcen wie Prozessor (CPU), Arbeitsspeicher (RAM), Speicher (Storage) und Netzwerk (Network) über deinen physischen Rechner bereitgestellt.

Dies geschieht durch eine Zuweisung von Ressourcen bei der Erstellung einer solchen virtuale Maschine.
Du kannst es dir vorstellen, als würdest du deinen PC nehmen und in kleine Stücke aufteilen wie bei einem Kuchen.

Warum setzt man virtuelle Maschinen (VM’s) ein?

Natürlich ist dies nicht einfach so aus Lust und Laune entstanden, sondern weil durch neue Anforderungen der modernen Zeit.
Man hat schon früh darüber nachgedacht, wie umständlich es ist, für jedes Betriebssystem eine eigene Hardware-Maschine bzw. einen Server anzuschaffen.

Jeder physische Server birgt gewisse Umstände mit sich.
Grade das Thema Platz/Stauraum, Stromverbrauch, Abwärme und auch Wartung fallen hier an.
Denn sei es bei dir zuhause oder auch bei einem Unternehmen, der Platz ist begrenzt.
Stromverbrauch ist immer teuer, besonders, wenn sich dieser vermeiden lässt.
Abwärme ist grade im Serverraum/Unternehmen ein Thema da diese abgeführt werden muss.
Das bedeutet dann, dass die Klimageräte neu ausgelegt werden oder mehr leisten müssen und daher mehr Strom verbrauchen. Gleich mehr Kosten.

Nur als Info: Serverräume werden meistens auf 20°C oder niedriger (z.B. 15°C) runter gekühlt, damit die Hardware nicht beschädigt wird.

Und zu guter Letzt die Wartung, denn jede Hardware-Maschine muss einzeln gewartet werden und hat somit ein eigenes Risiko auszufallen.
Der Vorteil mit virtuellen Maschinen (VMs) ist also, dass ich mit einer „großen und starken Maschine“ mehrere Maschinen zusammenfassen kann.
Somit habe ich weniger Raum, den ich verbrauche, weniger Stromverbrauch und weniger Wärme.

Details die zu beachten sind bei virtuelle Maschinen (VM’s)

Die Wartung wird an sich auch weniger, doch wer sich gedacht hat: „Mumm, wenn jetzt diese eine Maschine ausfällt, dann ist ja alles weg“
Hat vollkommen recht!

Daher werden meistens redundante Systeme verwendet, damit man im Falle, dass die Eine ausfällt, die Andere nehmen kann und natürlich das Wichtigste:
„Man hat ein gutes Backup für den Restore!“

Die virtuellen Maschinen lassen sich „einfacher“ sichern (backuppen) als physische Maschinen.
Gleichzeitig liefern VMs viele weitere Funktionen, doch eine der bekanntesten ist die Snapshot Funktion.
Snapshots sind kein Ersatz für Backups, können jedoch bei kritischer Änderung als ein Fall Back verwendet werden.
Denn Snapshots sind zu Deutsch Fixpunkte bzw. Momentaufnahmen des Systems.
Bedeutet, man kann auf den Zustand des Snapshots zurückspielen, sollte etwas schief gehen.

Doch VMs haben nicht nur Vorteile, wenn es inzwischen wenig bis gar nicht bemerkbar ist, sind virtuelle Maschinen nicht genauso performant wie ihre physischen Gegenparts. Das liegt an dem „Overhead“ also an dem verwalterischen Aufwand, der mit Virtualisierung einher geht.

Verschiedene Optionen zu virtualisieren

Virtualisierung kann innerhalb deines Windows, MacOS oder Linux Systems betrieben werden oder in einem dedizierten Betriebssystem für Virtualisierung.

Dabei haben die Arten ihre eigenen Vorzüge z.B. die innerhalb deines vorhandenen Betriebssystems als Software laufen und somit zusätzlich zu deinem bestehenden System.

Doch auch das ist mit Nachteilen verbunden wie z.B. noch mehr Overhead, und zwar vom Betriebssystem selbst zusätzlich zur Virtualisierung. Das kann zu Verzögerungen und Performance Einbußen führen. Wobei diese meist für den Anfang nicht relevant sind.

Bei einer Virtualisierung mittels dedizierten Betriebssystems dagegen, entsteht der Vorteil das dieses System komplett auf diese Aufgabe ausgelegt ist und somit der Overhead möglichst geringgehalten wird, was die Performance natürlich verbessert.

Mögliche Lösungen sind:
Virutal Box, Vmware Player, Hyper-V, Vsphere, Proxmox, QEMU

Möglichkeiten von virtuelle Maschinen (VM’s) für Privat

Doch was ist da für dich drin?

Das kommt drauf an welche Ziele du verfolgst.

Du kannst kosteneffizient dein eigenes Home Lab aufbauen, dich weiterbilden, dir eigene Projekte überlegen (experimentieren) oder dir auch einen neuen Skill aneignen und somit technisch versierter sein.

Ein konkretes Beispiel ist zentraler Gaming Server.

Damit meine ich, dass du deinen Host so ausstatten kannst, dass du darauf Spiele spielen kannst.
Bedeutet, wenn du zu Hause eine Große Maschine hinstellst und diese dann mittels Virtualisierung aufteilst, kannst du mit einem Rechner mehrere Personen gleichzeitig und unabhängig zocken lassen.

Das heißt auch, dass für diese Maschine mehrere zusammenlegen können!
Und ja VMs sind nicht 1:1 so performant wie physische Maschinen, je nachdem wie man diese auslegt und optimiert sind diese Unterschiede jedoch nicht bemerkbar und „nur“ Messbar.

Oder auch interessant für dich könnte es sein, dass du somit einfach neue Betriebssysteme testen kannst.
Und wenn du das System nicht mehr brauchst, kannst du es einfach löschen und da weiter machen, wo du vorher warst.

Etwas weitergedacht, könntest du auch eine VM erstellen, die ein anderes OS verwendet, als du normalerweise nutzt, um dort „verdächtige“ Links und Dateien zu öffnen.

Denn wenn du in einer Linux VM einen Virus öffnest, der für Windows ist, passiert nichts.

Dieses Vorgehen nennt man auch Sandbox/Sand Boxing.

Achtung: Maleware kann so schlau sein das zu erkennen und reagiert dann bewusst nicht, dennoch kann das ein Security Layer für dich sein.

Wenn ich von Security spreche, darf Privacy nicht weit entfernt sein: dadurch, dass VM beliebig oft und schnell aufgesetzt werden können, entstehen verschiedene Identifier die im Internet genutzt werden, um dich zu erkennen.

Durch VMs können sich diese Parameter ändern, wodurch du nicht sofort erkannt wirst.

Auch du kannst virtuelle Maschinen nutzen!

Um virtuelle Maschinen zu nutzen, musst du keinen Server besitzen, auch Consumer Hardware wie dein PC oder Laptop können Virtualisierung verwenden.

Hierzu müssen zwei Voraussetzungen erfüllt sein.

  1. Die Virtualisierung- Funktion deiner CPU muss aktiviert werden! Dies wird über das UEFI / BIOS erledigt. Die Stichworte hierfür sind:
    1. Bei Intel: Intel VT oder VT-x.
    2. Für AMD: AMD-V
    3. ARM CPUs ist mir nicht bekannt, das dies aktiviert werden muss, daher gehe ich davon aus das dies „Default“ an ist. Falls jemand mehr weiß gerne Info
  2. Willst du innerhalb deines vorhandenen Betriebssystems virtualisieren oder du setzt eine dedizierte Maschine auf.

Für den Punkt 1 gibt es einige Anleitungen, meistens muss beim Starten des Computers die F2, F8, F12 oder Del Taste betätigt werden. Hierzu kann auch die Anleitung des Herstellers konsultiert werden.

Für den zweiten Punkt musst du dich entscheiden welche Art der Virtualisierung du nutzen möchtest.

Es gibt eine Dritte Option wie du die Vorzüge einer virtuellen Maschine testen und genießen kannst, und zwar mit Hosting/Cloud.

Das Stichwort ist Virtual Private Server (VPS), denn was Hoster wie Hostinger, Hetzner und viele andere machen ist genau das.

Diese virtualisieren einen Server für dich und geben dir einen Zugriff, auf dem du Snapshots erstellen kannst, die VM so oft „kaputt“ machen kannst, wie du willst und viele weitere Funktionen mit Support eines Profis.

Meine Meinung zu VMs

Virtuelle Maschinen waren und sind ein notwendiger Schritt des Fortschritts.
Hierdurch sind in Unternehmen und auch für Privat einige Vereinfachungen möglich, wodurch auch die Hürde für interessierte geringe ist.
Dadurch kann das Wissen sich weiterverbreiten und vor allem ist dies eine Gelegenheit seine Kreativität spielen zu lassen.Die virtuellen Umgebungen sehen überall anders aus und das ist auch gut so!

Für jeden der sich privat für IT-Themen interessiert kann man virtuelle Maschinen empfehlen, den man kann nicht nur Betriebssysteme von Windows und Linux virtualisieren, sondern auch Firewall Betriebssysteme wie eine OPNSense oder pfSense. Hierdurch kann sich auch ohne Netzwerkhardware mit Networking auseinandersetzen.

Dieser Vortrag hat sich bewusst allgemein gehalten.
Wenn in der Zukunft ein Beitrag mit Vertiefung kommt, wird dieser hier verlinkt.
Wie stehst du zu dem Thema? Wirst du dir nun etwas aufbauen oder hast noch weitere Fragen?
lass es mich wissen!

The post Virtuelle Maschinen (VM’s), nutze deine Ressourcen vielseitig und effizient first appeared on Dominik's Blog.

]]>
https://dominikkleidt.de/2023/12/21/virtuelle-maschinen-vms-nutze-deine-ressourcen-vielseitig-und-effizient/feed/ 0