Netzwerkkonzepte für Container

Abgeschlossen

Container sind isolierte Softwareeinheiten, die auf einem gemeinsam genutzten Betriebssystemkern ausgeführt werden. Ein Container verpackt eine Anwendung mit ihren Abhängigkeiten und abstrahiert sie von dem Hostbetriebssystem, unter dem sie ausgeführt wird. Das Ergebnis ist eine einfache Laufzeitumgebung, in der Anwendungen während der Entwicklung ausgeführt und problemlos gemeinsam genutzt werden können.

Ein Container ist vom Hostbetriebssystem und von anderen Containern isoliert. Virtuelle Netzwerkadapter, die an virtuelle Switches angeschlossen werden, ermöglichen es Containern, miteinander und mit externen Netzwerken zu kommunizieren.

Containerruntime: Docker

In diesem Modul untersuchen wir Netzwerkoptionen für Docker-Container unter Windows. Bei Docker handelt es sich um eine Reihe von Open-Source-Tools, Open-Source-Lösungen und cloudbasierten Diensten, die ein allgemeines Modell für das Packen (auch als Containerisierung bezeichnet) von App-Code in einer standardisierten Einheit, die als Docker-Container bereitstellen. Docker-Container bieten Sicherheitsfunktionen, um mehrere Container gleichzeitig auf demselben Host auszuführen, ohne sich dabei gegenseitig zu beeinträchtigen.

Containerisolation mit virtuellen Switches

Verschiedene Arten von virtuellen Switches bieten unterschiedliche Isolations- und Leistungsstufen für Container. Ein interner virtueller Switch ist nicht direkt mit einer physischen NIC auf dem Containerhost verbunden, nur ein externer virtueller Switch ist direkt verbunden.

Drei der am häufigsten verwendeten Typen von virtuellen Switches sind NAT, Transparent und Overlay.

  • Ein Container mit einem virtuellen NAT-Switch verwendet die Netzwerkadressenübersetzung (Network Address Translation, NAT) für den Zugriff auf externe Netzwerke. Der virtuelle NAT-Switch ist einfach einzurichten, beschränkt jedoch die Portabilität und Skalierbarkeit des Containers.
  • Ein transparenter virtueller Switch ermöglicht es Ihrem Container, eine direkte Verbindung mit dem physischen Netzwerk herzustellen. Dieser virtuelle Switch bietet Hochleistung und Flexibilität, aber die IP-Adressen und Routingregeln müssen manuell konfiguriert werden.
  • Der virtuelle Overlay-Switch erstellt eine virtuelle Netzwerkschicht über dem physischen Netzwerk. Sie erhalten eine hostübergreifende Kommunikation und Netzwerksegmentierung für Ihren Container, jedoch nehmen der Aufwand und die Komplexität zu.

Containerverwaltung

Im Allgemeinen werden Container als VMs angesehen, aber Sie müssen bedenken, dass sie es nicht sind. Ein Container hat einen anderen Lebenszyklus. Es wird nach Bedarf bereitgestellt, gestartet, beendet und zerstört. Aufgrund dieses Lebenszyklus sind Container austauschbar. Außerdem bedingt der Lebenszyklus, wie Fachkräfte in der Entwicklung und IT-Abteilungen die Verwaltung großer Containerbereitstellungen planen sollten.

CNI-Plug-Ins (Container Network Interface)

Zum Verwalten der Zuweisung und Konfiguration von IP-Adressen und virtuellen Netzwerkadaptern für Ihre Container müssen Sie ein CNI-Plug-In (Container Network Interface) verwenden. Ein CNI-Plug-In ist eine Softwarekomponente, die die CNI-Spezifikation implementiert, die eine Standardmethode für Orchestratoren wie Kubernetes definiert, um mit Netzwerkanbietern wie Azure zu interagieren.

Für Windows-Container stehen verschiedene CNI-Plug-Ins zur Verfügung, z. B.:

  • WinNAT-CNI-Plug-Ins verwenden virtuelle NAT-Switches für Containernetzwerke. WinNAT ist das Standard-CNI-Plug-In für Docker unter Windows.
  • WinCNI-Plug-Ins verwenden transparente virtuelle Switches für Containernetzwerke. WinCNI ist mit Kubernetes kompatibel, erfordert jedoch eine manuelle IP-Adressverwaltung.
  • Azure CNI-Plug-Ins verwenden virtuelle Overlay-Switches für Containernetzwerke. Azure CNI ist in Azure Virtual Network integriert und bietet erweiterte Features wie Netzwerkrichtlinien, Dienstermittlung und Lastenausgleich.

Container und Microservices

Eine Microservicesanwendung ist ein cloudnativer Architekturansatz, bei dem eine einzelne App aus vielen lose gekoppelten und unabhängig bereitgestellten Komponenten oder Diensten besteht. Jede Komponente oder jeder Dienst kann durch einen Container dargestellt werden.

Container implementieren nicht unbedingt eine Microservicesarchitektur. Container können eine monolithische Anwendung hosten, sind aber nicht für diesen Zweck konzipiert. Standardmäßig setzen die Containerlaufzeit (z. B. Docker) und der Containerorchestrator voraus, dass ein Container immer sicher gelöscht oder entfernt und bei Bedarf durch einen anderen Container ersetzt werden kann.

Container, Kubernetes und Netzwerk

Der Prozess der Bereitstellung, Aktualisierung, Überwachung und Entfernung von Containern bringt viele Herausforderungen mit sich. In diesem Modul untersuchen wir Containerverwaltungslösungen für Netzwerke für Windows-Container mit Kubernetes und Azure Kubernetes Service (AKS). Diese Optionen unterstützen die Verwendung von CNI-Plug-Ins für Containernetzwerke.