Kubernetes und Docker

Schnelleres Erstellen, Bereitstellen und Skalieren von Apps mit Containertechnologien, die gemeinsam besser funktionieren.

Entscheidung zwischen Kubernetes und Docker

Die Diskussion zu Kubernetes und Docker wird oft als Situation formuliert, die nur eine Option zulässt: Soll ich Kubernetes oder Docker verwenden? Dies ist wie der Vergleich von Äpfeln mit Apfelkuchen, und es ist ein häufiges Missverständnis, dass Sie sich für die eine oder andere Option entscheiden müssen.

Der Unterschied zwischen Kubernetes und Docker ist leichter zu verstehen, wenn er als Frage vom Typ „sowohl als auch“ formuliert wird. Tatsache ist, dass Sie sich nicht entscheiden müssen – Kubernetes und Docker sind grundsätzlich verschiedene Technologien, die gut zusammenarbeiten, um Containeranwendungen zu erstellen, bereitzustellen und zu skalieren.

Docker und der Anstieg der Containerisierung

Docker ist eine Open-Source-Technologie und ein Containerdateiformat zur Automatisierung der Bereitstellung von Anwendungen als portable, eigenständige Container, die in der Cloud oder lokal ausgeführt werden können. Docker, Inc. ist trotz des ähnlichen Namens eines der Unternehmen, das die Open-Source-Docker-Technologie für Linux und Windows in Zusammenarbeit mit Cloudanbietern wie Microsoft entwickelt.

Obwohl die Idee der Isolation von Umgebungen nicht neu ist und es andere Arten von Software zur Containerisierung gibt, hat sich Docker in den letzten Jahren zum Standardcontainerformat entwickelt. Docker unterstützt die Docker Engine, bei der es sich um eine Laufzeitumgebung handelt. Sie ermöglicht es Ihnen, Container auf jedem beliebigen Entwicklungscomputer zu erstellen und auszuführen. Dann speichern oder teilen Sie Containerimages über eine Containerregistrierung wie Docker Hub oder Azure Container Registry.

Während Anwendungen immer größer werden, um mehrere Container, die auf mehreren Servern bereitgestellt sind, zu verbinden, wird auch deren Betreibung immer komplexer. Obwohl Docker einen offenen Standard zum Packen und Verteilen von Containeranwendungen bietet, können sich die potenziellen Komplexitäten schnell ausweiten. Wie koordinieren und planen Sie eine große Anzahl von Containern? Wie kommunizieren die verschiedenen Container in Ihrer App miteinander? Wie skalieren Sie eine große Anzahl von Containerinstanzen? Hier kann Kubernetes helfen.

Kubernetes und Containerorchestrierung

Kubernetes ist eine Open-Source-Software zur Orchestrierung, die eine API zur Steuerung bereitstellt, wie und wo diese Container ausgeführt werden. Sie ermöglicht es Ihnen, Ihre Docker-Container und Workloads auszuführen und hilft Ihnen, einige der Komplexitäten beim Betrieb zu bewältigen, wenn Sie auf mehrere Container umsteigen, die über mehrere Server verteilt sind.

Mit Kubernetes können Sie einen Cluster mit virtuellen Computern orchestrieren und planen, wann Container auf diesen virtuellen Computern basierend auf ihren verfügbaren Computeressourcen und den Ressourcenanforderungen von jedem Container ausgeführt werden. Container werden in Pods gruppiert, die grundlegende Vorgangseinheit, die Kubernetes orchestriert. Diese Container und Pods können bis zum gewünschten Zustand skaliert werden, und Sie können deren Lebenszyklus verwalten, um Ihre Apps betriebsbereit zu halten.

Wie unterscheiden sich Kubernetes und Docker?

Obwohl es üblich ist, Kubernetes mit Docker zu vergleichen, ist ein passenderer Vergleich Kubernetes mit Docker Swarm. Docker Swarm ist die Orchestrierungstechnologie von Docker, die sich auf das Clustering von Docker-Containern konzentriert und fest in das Docker-Ökosystem integriert ist und über eine eigene API verfügt.

Ein wesentlicher Unterschied zwischen Kubernetes und Docker besteht darin, dass Kubernetes über einen Cluster ausgeführt werden soll, während Docker auf einem einzelnen Knoten ausgeführt wird. Kubernetes ist umfangreicher als Docker Swarm und soll Knotencluster in der Produktionsumgebung effizient koordinieren. Kubernetes-Pods – Planungseinheiten, die mindestens einen Container im Kubernetes-Ökosystem enthalten können – sind auf Knoten verteilt, um die Hochverfügbarkeit bereitzustellen.

Kubernetes und Docker – besser zusammen

Während das Hauptziel von Containern darin besteht, etwas einmal zu codieren und dann überall auszuführen, bietet Kubernetes das Potenzial, sämtliche Containerressourcen von einer einzelnen Steuerungsebene aus zu orchestrieren und zu verwalten. Es hilft bei Netzwerken, Lastenausgleich, Sicherheit und Skalierung über alle Kubernetes-Knoten hinweg, auf denen Ihre Container ausgeführt werden. Kubernetes verfügt auch über einen integrierten Isolationsmechanismus wie Namespaces, mit dem Sie Containerressourcen nach Zugriffsberechtigungen, Stagingumgebungen usw. gruppieren können. Diese Konstrukte erleichtern es der IT-Abteilung, Entwicklern den Zugriff auf Self-Service-Ressourcen und die Zusammenarbeit auch bei komplexesten Mikroservices-Architekturen zu ermöglichen, ohne die gesamte Anwendung in ihrer Entwicklungsumgebung nachzuahmen. Die Kombination von DevOps-Praktiken mit Containern und Kubernetes ermöglicht darüber hinaus eine Baseline der Microservices-Architektur, die eine schnelle Bereitstellung und skalierbare Orchestrierung von cloudnativen Anwendungen ermöglicht.

Kurz gesagt, verwenden Sie Kubernetes mit Docker für Folgendes:

  • Gestalten Sie Ihre Infrastruktur stabiler und steigern Sie die Verfügbarkeit Ihrer App. Ihre App bleibt online, auch wenn einige der Knoten offline gehen.
  • Verbessern Sie die Skalierbarkeit Ihrer Anwendung. Wenn die Auslastung Ihrer App stark zunimmt und Sie sie horizontal hochskalieren müssen, damit sie eine bessere Benutzererfahrung bietet, können Sie ganz einfach weitere Container erstellen oder weitere Knoten zu Ihrem Kubernetes-Cluster hinzufügen.

Kubernetes und Docker können gemeinsam verwendet werden. Docker ist ein offener Standard zum Packen und Verteilen containerbasierter Anwendungen. Mit Docker können Sie Container erstellen, ausführen, speichern und freigeben. Auf einem Kubernetes-Cluster aufsetzende Docker können ganz einfach ausgeführt werden, aber Kubernetes selbst ist keine vollständige Lösung. Um Kubernetes in der Produktionsumgebung zu optimieren, implementieren Sie zusätzliche Tools und Dienste zur Verwaltung von Sicherheit, Governance, Identität und Zugriff sowie CI/CD-Workflows (Continuous Integration/Continuous Deployment) und andere DevOps-Methoden.

Lösungsarchitekturen mit Kubernetes und Docker in der Produktionsumgebung

Simplify the deployment and management of Microservices based applicationsSimplify the deployment and management of Microservices based applications12345567778
  1. Übersicht
  2. Ablauf

Übersicht

Verwenden Sie AKS, um die Bereitstellung und Verwaltung einer auf Microservices basierenden Architektur zu vereinfachen. AKS rationalisiert die Geheimnisverwaltung mit horizontaler Skalierung, Selbstreparatur und Lastenausgleich.

Ablauf

  1. 1 Ein Entwickler verwendet eine IDE wie Visual Studio zum Committen von Änderungen in GitHub.
  2. 2 GitHub löst einen neuen Build in Azure DevOps aus.
  3. 3 Azure DevOps packt Microservices als Container und überträgt sie an Azure Container Registry.
  4. 4 Die Container werden im AKS-Cluster bereitgestellt.
  5. 5 Benutzer greifen über Apps und die Website auf die Dienste zu.
  6. 6 Mit Azure Active Directory wird der Zugriff auf die Ressourcen gesichert.
  7. 7 Die Microservices verwenden Datenbanken, um Informationen zu speichern und abzurufen.
  8. 8 Der Administrator nutzt für den Zugriff ein separates Verwaltungsportal.
Secure DevOps for AKSDevOps and Kubernetes are better together. Implementing secure DevOps together with Kubernetes on Azure, you can achieve the balance between speed and security and deliver code faster at scale. Put guardrails around the development processes using CI/CD with dynamic policy controls and accelerate feedback loop with constant monitoring. Use Azure Pipelines to deliver fast while ensuring enforcement of critical policies with Azure Policy. Azure provides you real-time observability for your build and release pipelines, and the ability to apply compliance audit and reconfigurations easily.123456789
  1. Übersicht
  2. Ablauf

Übersicht

DevOps und Kubernetes funktionieren zusammen am besten. Wenn Sie sichere DevOps-Methoden zusammen mit Kubernetes in Azure implementieren, können Sie ein Gleichgewicht zwischen Geschwindigkeit und Sicherheit erzielen und Ihren Code schneller und bedarfsorientierter liefern. Setzen Sie Standards für den Entwicklungsprozess fest, indem Sie CI/CD mit dynamischer Richtlinienkontrolle einsetzen und die Feedbackschleife durch konstante Überwachung beschleunigen. Nutzen Sie Azure Pipelines, um Ihre Projekte schnell zu liefern und dabei wichtige Richtlinien mit Azure Policy zu erzwingen. Azure bietet Echtzeiteinblicke in Ihre Build- und Releasepipelines. Zudem können Sie einfach Neukonfigurationen vornehmen und Complianceüberwachungen einrichten.

Ablauf

  1. 1 Entwickler führen das schnelle Durchlaufen, Testen und Debuggen verschiedener Teile einer Anwendung zusammen in demselben Kubernetes-Cluster durch.
  2. 2 Code wird in einem GitHub-Repository zusammengeführt, und anschließend werden automatisierte Build- und Testvorgänge von Azure Pipelines ausgeführt.
  3. 3 Das Containerimage wird in Azure Container Registry registriert.
  4. 4 Kubernetes-Cluster werden mit Tools wie Terraform bereitgestellt. Mit Helm-Diagrammen, die mit Terraform installiert werden, wird der gewünschte Zustand von App-Ressourcen und -Konfigurationen definiert.
  5. 5 Betreiber erzwingen Richtlinien zum Steuern von Bereitstellungen im AKS-Cluster.
  6. 6 Die Releasepipeline führt automatisch eine vordefinierte Bereitstellungsstrategie für jede Codeänderung durch.
  7. 7 Die Richtlinienerzwingung und -überprüfung wird der CI/CD-Pipeline über Azure Policy hinzugefügt.
  8. 8 App-Telemetrie, Systemüberwachung für Container und Protokollanalyse in Echtzeit werden über Azure Monitor bereitgestellt.
  9. 9 Anhand von Erkenntnissen werden Probleme behandelt und in die nächsten Sprint-Pläne eingefügt.

Mit Azure auf die Stärken von Kubernetes bauen

Die Bereitstellung und Verwaltung Ihrer Containeranwendungen ist mit Azure Kubernetes Service (AKS) einfach. AKS umfasst die serverlose Plattform Kubernetes, integrierte CI/CD-Funktionen (Continuous Integration/Continuous Delivery) sowie Sicherheit und Governance auf Unternehmensniveau. Ihre Entwicklungs- und Betriebsteams können gemeinsam auf einer Plattform arbeiten, um Anwendungen ohne Bedenken schnell erstellen, ausliefern und skalieren zu können.

Erste Schritte mit Kubernetes und Docker