Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was bedeutet Pod in Docker?

Was bedeutet Pod in Docker?

WBOY
WBOYOriginal
2022-07-08 11:11:335703Durchsuche

In Docker bedeutet Pod eine kombinierte Multi-Container-Laufeinheit; Pod ist eine Basiseinheit in Kubernetes, die als Erweiterung oder erweiterter Container des Containers betrachtet werden kann und mehrere Prozesse in einem „Namensraum“ verpackt, einem Pod wird gebildet, und die Anwendungsverpackung verschiedener Prozesse im Pod ist immer noch unabhängig.

Was bedeutet Pod in Docker?

Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Docker-Version 19.03, Dell G3-Computer.

Was bedeutet Pod in Docker?

Pod ist eine kombinierte Multi-Container-Laufeinheit und eine Basiseinheit in Kubernetes. Sie können es sich als Erweiterung eines Containers oder als erweiterten Container vorstellen. Pod umfasst einen Hauptcontainer und mehrere Hilfscontainer, die zusammen eine bestimmte Funktion erfüllen. Wenn mehrere Prozesse (Container sind auch isolierte Prozesse) in einem Namespace verpackt werden, entsteht ein Pod. Die Anwendungsverpackung verschiedener Prozesse im Pod ist weiterhin unabhängig (jeder Container verfügt über ein eigenes Image).

Die Bedeutung von Pod besteht darin, dass es die enge Beziehung zwischen dem Hauptcontainer und dem Hilfscontainer aufrechterhalten und gleichzeitig die Unabhängigkeit des Hauptcontainers wahren kann. Da der Hauptcontainer und der Hilfscontainer denselben Lebenszyklus haben und gleichzeitig erstellt und zerstört werden können, kann ihre Interaktion durch die Platzierung in einem Pod effizienter gestaltet werden.

Andererseits muss der Hauptcontainer einige Hauptaufgaben erledigen, während andere Aufgaben möglicherweise üblich sind und separat verpackt und vom Hilfscontainer ausgeführt werden können.

Wissen erweitern

Was ist ein Container?

Es ist nicht einfach, eine genaue Definition eines Containers zu geben, da jeder Container aus einer anderen Perspektive betrachtet. Nach Ansicht von Liu Junhui sind Container nicht nur eine Möglichkeit, Recheneinheiten bereitzustellen, sondern auch eine Form der Verpackung von Anwendungen.

- Ein Container ist eine Recheneinheit

Als Recheneinheit ist ein Container dasselbe wie ein Thread, ein Prozess, eine virtuelle Maschine oder eine physische Maschine (wie in der Abbildung unten dargestellt). Auf einer Kontinuumsskala sind Isolation, Sicherheit und Overhead nach links geringer und nach rechts höher. Ein Container ist eine Recheneinheit zwischen einem Prozess und einer virtuellen Maschine.
Was bedeutet Pod in Docker?
Aber nicht alle Anwendungen sind für Container geeignet. Basierend auf den Eigenschaften und Anforderungen ihrer eigenen Anwendungen können Entwickler die am besten geeignete Recheneinheit auswählen. Wenn Ihre Anwendung beispielsweise hochleistungsfähig ist, sich gegenseitig vertraut und sich im selben Verwaltungsbereich befindet, sind Threads oder Prozesse ausreichend. Wenn Ihre Anwendung jedoch mehrmandantenfähig ist und im selben Bereich wie andere Anwendungen ausgeführt wird, benötigen Sie Folgendes Überlegen Sie, wie Sie diese Anwendungen sicher isolieren können, damit keine Daten verloren gehen oder die Leistung beeinträchtigt wird. Zu diesem Zeitpunkt können Container eine gute Wahl sein.

Da es sich bei dem Container um einen „stark isolierten Prozess“ handelt, werden neue Isolationsmechanismen hinzugefügt, die auf der Isolierung allgemeiner Prozesse basieren. Diese Isolationsmechanismen werden vom Linux-Kernel bereitgestellt, einschließlich einiger Namespaces (Name Spaces) und CGroup. Namespaces können in drei Kategorien unterteilt werden: Netzwerk, Speicher und Computer. Unter ihnen ist der Netzwerk-Namespace der wichtigste. Es stellt sicher, dass das Netzwerk des Containers unabhängig von anderen Containernetzwerken ist. Das Dateisystem, das jeder Container sieht, wird nicht mit anderen Containern geteilt. Jeder Container kann nur seine eigene Prozess-ID sehen, und die Prozessnummern sind ebenfalls fortlaufend.

Wenn es um den größten Unterschied zwischen Containern und virtuellen Maschinen geht, glaubt Liu Junhui, dass das größte Merkmal von Containern im Vergleich zu virtuellen Maschinen darin besteht, dass sie kein eigenes, unabhängiges Betriebssystem haben, sondern ein gemeinsames Betriebssystem auf ihrem Host haben; während eine virtuelle Maschine auf „einem separaten Server“ läuft. Daher sind die Kosten für Container geringer als die für virtuelle Maschinen, es fehlt jedoch die Isolation.

- Ein Container ist eine Verpackungsform einer Anwendung

Jeder, der Erfahrung in der Anwendungsentwicklung hat, weiß, dass eine Anwendung keine einzelne ausführbare Datei ist. Eine etwas komplexere Anwendung besteht aus mehreren Teilen, darunter: Code, ausführbare Dateien, Konfigurationsabhängigkeiten, externe Abhängigkeiten (Dynamic Link Libraries) usw.

Bei der Anwendung der Distributionspaketierung müssen Sie also Faktoren wie die Version des Zielbetriebssystems, die Systemarchitektur und die Module, von denen es abhängt, berücksichtigen. Andernfalls verändert die Anwendung bei der Installation verschiedene Teile des Systems.

Als Verpackung für eine Anwendung besteht ihr größtes Merkmal darin, dass sie die Unabhängigkeit und Portabilität der Anwendung erkennt. Der Container selbst enthält alle Abhängigkeiten der Anwendung, sodass sie unabhängig von der Systemversion auf jeder Infrastruktur ausgeführt werden kann. Architekturprobleme führen zu verschiedenen Unfällen.

02Was ist Docker?

Einfach ausgedrückt kann Docker als eine sehr erfolgreiche Container-Management-Plattform angesehen werden. Der wichtigste Teil von Docker ist seine laufende Verwaltungsumgebung (wie in der Abbildung unten dargestellt).
Was bedeutet Pod in Docker?
Wie oben erwähnt, ist ein Container eine Recheneinheit, und die Docker-Betriebsumgebung wird zum Erstellen, Verwalten und Zerstören dieser Recheneinheiten verwendet. Beim Erstellen und Verwalten dieser Recheneinheiten müssen Sie die Verpackung der Recheneinheit (dh ihr Softwareverteilungspaket) verwenden. Diese Pakete werden in Form von Container-Images gespeichert Diese Bilder entstehen.

Aber für das Image selbst gelten Versionsfreigabe-, Upgrade- und andere Anforderungen, die DockerHub, eine weitere wichtige Komponente von Docker, betreffen. DockerHub ähnelt ein wenig dem App Store von Apple. Es handelt sich um einen sehr großen „Containermarkt“ und alle häufig verwendete Software ist auf DockerHub zu finden.

Das letzte wichtige Modul von Docker sind die Benutzeroberfläche und Verwaltungstools, mit denen Befehle an die Laufumgebung des Containers ausgegeben oder der Status angezeigt werden. Sie müssen lediglich einen Docker-Befehl verwenden und einige Parameter hinzufügen, um den Container zu erstellen, zu löschen und den Ausführungsstatus anzuzeigen.

Als nächstes werfen wir einen Blick auf die tatsächliche Funktionsweise von Docker. Wir werden die Ausführung eines Hello World-Containers als Beispiel nehmen, um über die Verwendung von Docker zu sprechen. Tatsächlich müssen Sie nur Docker installieren und können versuchen, diesen Hello World-Container auszuführen.

Schauen wir uns anhand des folgenden Codes an, was Docker getan hat:
Was bedeutet Pod in Docker?
Zuerst sehen wir, dass Docker lokal nach der neuesten Version des Hello World-Images sucht. Es stellt fest, dass dieses Image nicht lokal vorhanden ist, und geht dann zu DockerHub zum Hochladen dieses Bildes. Anschließend wird das Image ausgeführt und Docker erstellt im Hintergrund einen solchen Container.

Das Aufkommen von Docker macht die Verwaltung von Containeranwendungen sehr einfach. Zum Ausführen eines Containers ist nur ein Befehl erforderlich. Das Herunterladen von Bildern von DockerHub, das Erstellen verschiedener Isolationsumgebungen, das Erstellen von Containern und externen Netzwerkkommunikationsumgebungen kann alles mit Docker erledigt werden. Man kann sagen, dass Docker den gesamten Lebenszyklus des Containers verwalten kann.

03 Container vs. virtuelle Maschinen, Axt und Säge des Holzfällers

Als Zusammenfassung der Container können wir die größten Merkmale von Containern als leichte und völlig unabhängige Bereitstellung zusammenfassen. Diese beiden Eigenschaften stehen im Einklang mit der elastischen, unbegrenzten Erweiterung und der bedarfsgesteuerten Nutzung von Cloud Native. Aus diesem Grund sind Container zum Eckpfeiler von Cloud Native geworden.

Obwohl sowohl Container als auch virtuelle Maschinen Recheneinheiten sind, kann der Übergang von virtuellen Maschinen zu Containern nicht als einfache Leistungsverbesserung oder Architekturänderung angesehen werden, sondern als Änderung der Anwendungsphilosophie.

Zum Beispiel benutzten Holzfäller früher Äxte, wenn sie lasen. Später war jeder der Meinung, dass die Verwendung von Äxten zu mühsam sei, also führte ein Experte ein anderes Werkzeug zum Fällen von Bäumen ein, die Säge. Aber wenn ein Holzfäller eine Säge nimmt, um einen Baum zu fällen, wird er feststellen, dass es keine Axt gibt, die einfach zu bedienen ist. Aber die Wahrheit ist, dass eine Axt und eine Säge zwei verwendete Konzepte sind.

Was den konzeptuellen Unterschied zwischen Containern und virtuellen Maschinen angeht, können wir ihn anhand der folgenden Tabelle noch besser nachvollziehen.
Was bedeutet Pod in Docker?
Typische Anwendungen von Containern lassen sich in zwei Kategorien einteilen: zum einen Microservices und zum anderen DevOps.

Microservices bedeuten, dass verschiedene Einheiten oder Funktionen des Systems unterschiedliche Container ausführen. Die Anzahl der Container für jeden Dienst kann entsprechend seiner eigenen Auslastung angepasst werden. Ein großes System umfasst beispielsweise Funktionen wie Benutzeranmeldung, Produktanzeige und Produktinteraktion. Allerdings erhöhen sich nicht alle Teile des Systems gleichzeitig. Einige Teile sind möglicherweise stärker ausgelastet und einige Teile verfügen möglicherweise über eine Überkapazität.
Was bedeutet Pod in Docker?
DevOps bezieht sich auf optimierte Entwicklungs-, Test- und Produktionsprozesse. Aufgrund der „eigenständigen“ Funktion des Containers kann die Anwendungsverpackung der Entwicklungsumgebung, Testumgebung und Produktionsumgebung vollständig konsistent sein, wenn er als Standard-Umlaufartikel verwendet wird. Dies reduziert Unfälle, die durch Konfigurationsfehler bei Anwendungsabhängigkeiten verursacht werden usw., wodurch die gesamte Entwicklungs-, Test- und Produktionspipeline effizienter wird.
Was bedeutet Pod in Docker?

04 Pod, ein erweiterter Container

Pod ist eine kombinierte Multi-Container-Laufeinheit und eine Basiseinheit in Kubernetes. Sie können es sich als Erweiterung oder erweiterten Container eines Containers vorstellen. Pod umfasst einen Hauptcontainer und mehrere Hilfscontainer, die zusammen eine bestimmte Funktion erfüllen. Wenn mehrere Prozesse (Container sind auch isolierte Prozesse) in einem Namespace verpackt werden, entsteht ein Pod. Die Anwendungsverpackung verschiedener Prozesse im Pod ist weiterhin unabhängig (jeder Container verfügt über ein eigenes Image).

Die Bedeutung von Pod besteht darin, dass es die enge Beziehung zwischen dem Hauptcontainer und dem Hilfscontainer aufrechterhalten und gleichzeitig die Unabhängigkeit des Hauptcontainers wahren kann. Da der Hauptcontainer und der Hilfscontainer denselben Lebenszyklus haben und gleichzeitig erstellt und zerstört werden können, kann ihre Interaktion durch die Platzierung in einem Pod effizienter gestaltet werden.

Andererseits muss der Hauptcontainer einige Hauptaufgaben erledigen, während andere Aufgaben möglicherweise üblich sind und separat verpackt und vom Hilfscontainer ausgeführt werden können.

Ich empfehle jedem dringend, eine Website namens Katacoda zu besuchen. Sie bietet eine große Anzahl kostenloser Online-Experimente, darunter praktische Projekte wie Docker und Docker Image, und sie ist jetzt völlig kostenlos. Sie können genauso gut hierhergehen und sich die Hände schmutzig machen.

Wenn auf einer Containerplattform mehrere Mandantenanwendungen ausgeführt werden, kann es leicht zu „lateralen Angriffen“ kommen, d Betriebsberechtigungen anderer Prozesse oder Container. Derzeit führen solche Schwachstellen in der Regel zu einer böswilligen Nutzung von Computerressourcen zum „Mining“.

Um dieses Problem anzugehen, gibt es derzeit zwei Lösungen: eine „Einschränkung von Systemaufrufen“ und eine andere „unabhängiger Kernel“.

Das Einschränken von Systemaufrufen bezieht sich auf die Reduzierung der Anwendungsfunktionen durch Begrenzen der Systemaufrufe der Anwendung, wodurch Schäden an anderen Anwendungen vermieden werden. Derzeit verfolgen Googles Givsor und IBMs Nabla diesen Ansatz. Wie in der folgenden Abbildung dargestellt, greift eine Anwendung ursprünglich auf alle Systemaufrufe zu, im Nabla-Modus greift die Anwendung jedoch nur auf die erforderlichen Systemaufrufe zu und andere Aufrufe werden blockiert.
Was bedeutet Pod in Docker?
Der Nachteil dieser Methode besteht jedoch darin, dass Sie der Anwendung zu Beginn „genau die richtigen“ Berechtigungen erteilen müssen. Wenn Sie versehentlich nicht genügend Berechtigungen erteilen, kann die Anwendung abstürzen.

Der unabhängige Kernel bezieht sich auf die virtuelle Maschinenlösung. Er bezieht sich auf das Hinzufügen eines neuen Kernels zum Container. Dieser Kernel ist leichtgewichtig und umfasst zwei Implementierungsmethoden: „Mikrokernel“ und „Unikernel“. Unikernels und Anwendungen werden zusammen kompiliert und können ohne Systemaufrufe direkt über Funktionen aufgerufen werden.

Der Vorteil dieser Lösung besteht darin, dass sich der Container im Wesentlichen nur mit seinem eigenen Kernel befasst, während der Kernel sich mit dem Host befasst. Die Interaktion zwischen dem Kernel und dem Host erfordert keine direkten Aufrufe zum Schaden Anweisungen. Derzeit verwenden die nativen Container von Kata Container und JD.com Cloud diese Methode.

Der Vorteil dieses Ansatzes besteht darin, dass der Mikrokernel als Minimalbetriebssystem alle Systemaufrufe erfüllen kann und gleichzeitig einige unnötige Systembetriebsteile entfernt, wodurch die zweite Ebene erreicht wird Der Overhead ist geringer als der einer virtuellen Maschine.

Empfohlenes Lernen: „Docker-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas bedeutet Pod in Docker?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn