Vollständiger Leitfaden zur Integration von Docker mit Kubernetes: Konzepte, Beispiele und Best Practices

Letzte Aktualisierung: 08/05/2025
Autor: Holger
  • Lernen Sie die wesentlichen Konzepte und Unterschiede zwischen Docker und Kubernetes kennen.
  • Erfahren Sie, wie Sie Docker Compose-Projekte mit Kompose zu Kubernetes migrieren.
  • Entdecken Sie praktische Beispiele, fortgeschrittene Strategien und Tools zur Integration.

Docker- und Kubernetes-Integration

Containertechnologie ist der Eckpfeiler der Anwendungsmodernisierung. Es ermöglicht Ihnen, Anwendungen mit allen Abhängigkeiten in einer portablen Einheit zu kapseln, die in jeder Umgebung einheitlich ausgeführt werden kann, sei es vor Ort, in der Cloud oder in einer Hybridumgebung. Container isolieren Anwendungen vom Host-Betriebssystem und anderen Containern, indem sie Funktionen nutzen, die dem Container-Kernel innewohnen. Linux wie Namespaces und Cgroups. Um tiefer in die Definition wiederholbarer Konfigurationen einzutauchen, können Sie auch unseren Artikel über Was ist YAML und wie wird es in Kubernetes verwendet?.

Zu seinen Vorteilen zählen: Isolierung, Tragbarkeit, Leichtigkeit und Modularität. Diese Funktionen sowie die Möglichkeit, Instanzen schnell zu starten und die Umgebungskonsistenz aufrechtzuerhalten, machen sie ideal für den gesamten Lebenszyklus von der Entwicklung bis zur Produktion. Zu den beliebten Containertechnologien gehören Docker, Podman, Kubernetes (als Orchestrator) und CRI-O.

Was ist Docker? Grundlagen und Funktionalitäten

Docker Es handelt sich um die am weitesten verbreitete Containerisierungsplattform, die auf die Verpackung von Anwendungen und allen ihren Abhängigkeiten in sogenannten Containern spezialisiert ist. Mit Docker können Entwickler sicherstellen, dass ihre Anwendung unabhängig von der Umgebung gleich funktioniert, und so Probleme aufgrund der Lücke zwischen Entwicklung und Produktion vermeiden.

Eine Docker-Image Es handelt sich um eine Vorlage, die das Betriebssystem, den Quellcode, Bibliotheken und die erforderlichen Konfigurationen enthält. Diese Bilder entstehen durch eine Dockerfile, oder automatisch in einigen modernen Frameworks wie Spring Boot mithilfe bestimmter Plugins. Bei der Ausführung wird ein Bild zu einem Behälter, eine leichte, isolierte Instanz mit allem, was zum Ausführen der Anwendung erforderlich ist.

Docker-Vorteile: Portabilität, Automatisierung der Bereitstellung, Versionskontrolle, Geschwindigkeit Starten, Modularität und eine aktive Community, die zur weiteren Verbesserung des Ökosystems beiträgt.

Kubernetes: Container im großen Maßstab orchestrieren

Kubernetes, abgekürzt K8s, ist der führende Container-Orchestrator. Automatisiert die Bereitstellung, Verwaltung, Skalierung und den Betrieb von Containeranwendungen. Es wurde erstellt von Google und ist jetzt ein Open-Source-Projekt, das von der CNCF und einer globalen Community gepflegt wird.

Im Gegensatz zu Docker, das sich ausschließlich um die Containerisierung kümmert, verwaltet Kubernetes mehrere Container, die über mehrere Knoten verteilt sind, und bietet so hohe Verfügbarkeit, Skalierbarkeit, Automatisierung, Selbstheilung und Lastausgleich.

Ihre Schlüsselkomponenten umfassen:

  • Hülsen: Die kleinste Bereitstellungseinheit, die einen oder mehrere Container enthalten kann, die sich ein Netzwerk teilen und Lagerung.
  • Dientsleistungen: Sie bieten stabilen, abstrakten Zugriff auf Pods und verwalten den Datenverkehr durch Netzwerkrichtlinien und Lastausgleich.
  • Bereitstellungen: Sie verwalten den Lebenszyklus von Pods, stellen sicher, dass die gewünschte Anzahl an Replikaten beibehalten wird, und erleichtern Upgrades oder Rollbacks.
  • ConfigMaps und Geheimnisse: Sie speichern Konfigurations- und vertrauliche Daten und ermöglichen eine dynamische Injektion in Pods.
  • Namensräume: Sie ermöglichen die Aufteilung des Clusters in logische Umgebungen, um Ressourcen zu organisieren und Projekte oder Teams zu isolieren.
  Erste Schritte in Meta Horizon: Was es ist, wie man es betritt und erstellt

Docker Kubernetes-Orchestrierung

Vergleich: Docker Compose vs. Kubernetes

Docker komponieren y Kubernetes Sie erfüllen unterschiedliche Bedürfnisse, auch wenn sie miteinander verwandt sind. Docker Compose vereinfacht die Definition und Verwaltung von Multi-Container-Anwendungen in lokalen oder Entwicklungsumgebungen mithilfe von Dateien docker-compose.yml. Sie können damit mehrere Dienste, Netzwerke und Volumes mit einem einzigen Befehl starten und so Tests und die Zusammenarbeit erleichtern.

Kubernetes Es geht noch viel weiter: Es ist für groß angelegte Bereitstellungen in der Produktion, die Orchestrierung von auf mehrere Knoten verteilten Containern, die Verwaltung hoher Verfügbarkeit, automatische Skalierung, Neuplanung ausgefallener Pods und vieles mehr konzipiert. Viele Teams beginnen mit Compose und migrieren zu Kubernetes, wenn die Komplexität oder der Skalierungsbedarf zunimmt.

Umstellung von Docker Compose auf Kubernetes mit Kompose

Für Teams, die bereits in Docker Compose definierte Anwendungen haben, kann die Migration zu Kubernetes komplex erscheinen. Hier ist Komponieren steht im Mittelpunkt: Es ist ein Aktionsinstrument Befehle entwickelt, um Dateien automatisch zu konvertieren docker-compose.yml in Kubernetes-Manifesten (YAML), wie zum Beispiel Implementierungen y Leistungen, wodurch der Übergang beschleunigt und manuelle Fehler reduziert werden.

Der Vorgang mit Kompose ist einfach und besteht aus vier grundlegenden Schritten:

  1. Installation: Laden Sie die Binärdatei aus dem offiziellen Repository herunter und platzieren Sie sie in Ihrem PATH.
  2. docker-compose.yml vorbereiten: Überprüfen und aktualisieren Sie Ihre Datei, um Ihre gewünschten Einstellungen (Dienste, Netzwerke, Volumes usw.) widerzuspiegeln.
  3. Umwandlung: Lauf kompose convert um die Kubernetes-Manifeste zu generieren.
  4. Einsatz: Verwendung kubectl apply -f um Ressourcen zum Kubernetes-Cluster zu bringen.

Mit diesem Tool können Sie frühere Arbeiten in Compose nutzen und in fortgeschritteneren Produktionsumgebungen beschleunigen.

Praktische Integration: Erstellen und Bereitstellen von Docker-Images auf Kubernetes

Der typische Bereitstellungsworkflow umfasst die folgenden Schritte:

  • Bildaufbau: Verwendung Tools wie Dockerfile um Ihr Image aus Code und Abhängigkeiten zu erstellen.
  • Beschriftung und Push: Laden Sie das Bild auf eine Containerregistrierung wie Docker Hub, Google Container Registry oder Azure Container Registry, damit Kubernetes darauf zugreifen kann.
  • Erstellen des Kubernetes-Clusters: Dies kann lokal (mit Minikube oder Docker Desktop), in der Cloud (GKE, EKS, AKS) oder vor Ort erfolgen.
  • Einsatz: Definieren Sie Ihre Manifeste YAML (Deployment, Service, ConfigMap, Secret, etc.) und stellen Sie die Anwendung bereit mit kubectl apply -f.
  • Leistungsvorstellung: Crea un Service (ClusterIP, NodePort oder LoadBalancer), um Pods entweder innerhalb oder außerhalb des Clusters zugänglich zu machen.
  • Überwachung und Prüfung: Validieren Sie die Bereitstellung, indem Sie auf den freigegebenen Endpunkt zugreifen und Tools wie kubectl get pods um den Status der Bereitstellung zu überprüfen.
  P7M-Dateien – Was sie sind, Eigenschaften, wie man sie öffnet

Erweitertes Beispiel: Spring Boot-Anwendungsintegration

Eine der am häufigsten nachgefragten Integrationen ist die von Java-Anwendungen mit Spring Boot. Es gibt Tools wie Buildpacks-Paket und Maven-Plugins, mit denen Sie Docker-Images automatisch erstellen können, ohne ein Dockerfile. Einfach laufen ./mvnw spring-boot:build-image -Dspring-boot.build-image.imageName=miapp:latest Das Image wird produktionsbereit bereitgestellt, entspricht den Best Practices und stellt die Kompatibilität sicher.

Ein nächster Schritt ist die Integration mit ConfigMaps und Geheimnisse zur Verwaltung der Konfiguration im Cluster und zur Erleichterung der Integration mit Docker komponieren in Entwicklungsumgebungen.

Kubernetes-Manifeste: Bereitstellung, Dienst, ConfigMap, Geheimnis, Namespace

Kubernetes verwaltet Ressourcen mithilfe von Dateien manifestieren Format YAML (oder JSON). Jede Ressource erfüllt eine bestimmte Funktion und es ist wichtig, ihre Struktur und Nützlichkeit zu kennen:

  • Einsatz: Verwaltet den Pod-Lebenszyklus und verwaltet die gewünschte Anzahl an Replikaten, während Upgrades ohne Ausfallzeiten ermöglicht werden.
  • Service: Ermöglicht den Zugriff, die Erkennung und den Verkehrsausgleich für Pods.
  • Konfigurationskarte: Speichert nicht vertrauliche Konfigurationen, die als Umgebungsvariablen eingefügt oder als Dateien bereitgestellt werden können.
  • Geheimnis: Speichert vertrauliche Daten wie Passwörter oder Zertifikate, codiert in Base64.
  • Namespace: Segmentieren und organisieren Sie Ressourcen innerhalb des Clusters für ein besseres Multi-Team- oder Multi-Projekt-Management.

Für eine erweiterte Integration werden Zugriffsregeln definiert mit Rollen y Rollenbindung, wodurch sichergestellt wird, dass nur autorisierte Benutzer oder Dienste bestimmte Ressourcen innerhalb der Namespaces ändern oder lesen können.

Integritätsprüfungen und Überwachung mit Spring Boot Actuator

In realen Umgebungen ist die Überwachung es ist unerlässlich. Spring Boot Actuator stellt beispielsweise HTTP-Endpunkte bereit (/actuator/health, /actuator/ready), die von Kubernetes verwendet werden können, um zu bestimmen, ob Pods bereit sind, Datenverkehr zu empfangen (Bereitschaftsprobe) oder wenn ein schwerwiegender Fehler vorliegt, der einen Neustart des Containers erfordert (Lebendigkeit Probe).

Die Konfiguration dieser Tests in Bereitstellungsmanifesten ist der Schlüssel zur Erstellung robuster, selbstverwaltender Anwendungen, die sich ohne manuelle Eingriffe von Fehlern erholen können.

Docker-Integrationsstrategien für Kubernetes

Bei fortgeschrittenen Szenarien kommt es häufig vor, dass Sie Situationen antreffen, in denen Sie Folgendes ausführen müssen: Docker in einem Pod, beispielsweise für CI/CD-Pipelines wie Jenkins. Es gibt drei Hauptstrategien:

  • Docker in Docker (DinD): Installieren Sie Docker Engine im selben Container. Es ist funktionsfähig, birgt jedoch Sicherheitsrisiken und Probleme mit der Speicherkompatibilität und wird für die Produktion nicht empfohlen.
  • Docker aus Docker (DooD): Die Anwendung greift auf den Docker-Daemon des Hostknotens zu, indem sie dessen Socket einbindet. Es verbessert die Leistung und vermeidet die Duplizierung von Daemons, birgt jedoch immer noch Sicherheits- und Ressourcenverwaltungsrisiken, die außerhalb der Kontrolle von Kubernetes liegen.
  • Docker-Beiwagen: Stellen Sie innerhalb des Pods einen zusätzlichen Container bereit, der als Docker Engine fungiert und seinen Socket über das lokale Netzwerk verfügbar macht. Fügen Sie Autorisierungs-Plugins hinzu, um Risiken zu mindern. Obwohl dadurch einige Probleme gemindert werden, sind dennoch besondere Privilegien und Sorgfalt erforderlich.
  So melden Sie sich von einem Mega-Konto ab

Empfehlung: Verwenden Sie nach Möglichkeit Werkzeuge dämonenlos Bilder zu erstellen und dabei die Probleme und Risiken früherer Lösungen zu vermeiden.

Installieren von Docker und Kubernetes: Windows und Linux

En Windows, am einfachsten geht das mit Docker-Desktop, wodurch Sie Kubernetes als lokale Entwicklungsumgebung aktivieren können. Der Ablauf ist:

  • Laden Sie Docker Desktop von der offiziellen Website herunter und installieren Sie es.
  • Aktivieren Sie die Kubernetes-Option in der Konfiguration.
  • Verwenden kubectl (ist integriert) zur Verwaltung von Ressourcen.

Für Produktionsumgebungen oder wenn mehr Kontrolle erforderlich ist, können Sie installieren Minikube oder direkt in virtuelle Maschinen oder blankes Metall.

Unter Linux (z. B. Ubuntu 22.04):

  • Aktualisieren Sie das System mit sudo apt-get update && sudo apt-get upgrade.
  • Installieren Sie Docker mit sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin.
  • Installieren Sie Kubernetes, indem Sie das offizielle Repository hinzufügen und ausführen sudo apt-get install -y kubeadm.
  • Initialisieren Sie den Cluster mit sudo kubeadm init --pod-network-cidr 10.244.0.0/16.
  • Konfigurieren kubectl Kopieren der Konfigurationsdatei nach $HOME/.kube/config und Anpassen von Berechtigungen.
YAML
Verwandte Artikel:
YAML: Was es ist, wie es funktioniert und wofür es verwendet wird