Lassen Sie uns über einige der beliebten Container-Orchestrierungstools sprechen, die auf dem Markt erhältlich sind.
Inhaltsverzeichnis
Was ist eine Container-Orchestrierung?
Containerplattformen wie Docker sind heutzutage sehr beliebt, um Anwendungen basierend auf einer Microservices-Architektur zu verpacken. Container können hochgradig skalierbar gemacht werden, die nach Bedarf erstellt werden können. Dies ist zwar gut für ein paar Container, aber stellen Sie sich vor, Sie haben Hunderte davon.
Es wird extrem schwierig, den Container-Lebenszyklus und seine Verwaltung zu verwalten, wenn die Anzahl dynamisch mit der Nachfrage steigt.
Die Container-Orchestrierung löst das Problem, indem sie die Planung, Bereitstellung, Skalierbarkeit, Lastverteilung, Verfügbarkeit und Vernetzung von Containern automatisiert. Container-Orchestrierung ist die Automatisierung und Verwaltung des Lebenszyklus von Containern und Diensten.
Es ist ein Prozess zur Verwaltung und Organisation mehrerer Container und Microservices-Architekturen in großem Maßstab.
Glücklicherweise gibt es viele Container-Orchestrierungstools auf dem Markt.
Lassen Sie uns sie erkunden!
Kubernetes
Du hast es erraten, nicht wahr?
Kubernetes ist eine Open-Source-Plattform, die ursprünglich von Google entwickelt wurde und jetzt von der Cloud Native Computing Foundation verwaltet wird. Kubernetes unterstützt sowohl die deklarative Konfiguration als auch die Automatisierung. Es kann helfen, die Bereitstellung, Skalierung und Verwaltung von containerisierten Workloads und Diensten zu automatisieren.
Bild von Kubernetes.io
Die Kubernetes-API hilft beim Aufbau der Kommunikation zwischen Benutzern, Clusterkomponenten und externen Komponenten von Drittanbietern. Kubernetes-Steuerungsebene und -Knoten werden auf einer Gruppe von Knoten ausgeführt, die zusammen den Cluster bilden. Anwendungs-Workload besteht aus einem oder mehreren Pods, die auf Worker-Knoten ausgeführt werden. Die Steuerungsebene verwaltet Pods und Worker-Knoten.
Unternehmen wie Babylon, Booking.com, AppDirect nutzen Kubernetes ausgiebig.
Merkmale
- Diensterkennung und Lastenausgleich
- Speicherorchestrierung
- Automatisierte Rollouts und Rollbacks
- Horizontale Skalierung
- Geheimnis- und Konfigurationsverwaltung
- Selbstheilung
- Batch-Ausführung
- IPv4/IPv6-Dual-Stack
- Automatische Behälterverpackung
Möchten Sie Kubernetes lernen? Sehen Sie sich diese Lernressourcen an.
OpenShift
Red Hat bietet OpenShift Container-Plattform als Service (PaaS). Es hilft bei der Automatisierung von Anwendungen auf sicheren und skalierbaren Ressourcen in hybriden Cloud-Umgebungen. Es bietet Plattformen der Enterprise-Klasse zum Erstellen, Bereitstellen und Verwalten von containerisierten Anwendungen.
Bild von Openshift
Es basiert auf Redhat Enterprise Linux und der Kubernetes-Engine. Openshift verfügt über verschiedene Funktionen zur Verwaltung von Clustern über UI und CLI. Redhat bietet Openshift in zwei weiteren Varianten an,
- Openshift Online – angeboten als Software as a Service (SaaS)
- OpenShift Dedicated – angeboten als Managed Services
Openshift Origin (Origin Community Distribution) ist ein Open-Source-Upstream-Community-Projekt, das in OpenShift Container Platform, Openshift Online und OpenShift Dedicated verwendet wird.
Nomade
Nomade ist ein einfacher, flexibler und benutzerfreundlicher Workload Orchestrator zum Bereitstellen und Verwalten von Containern und nicht containerisierten Anwendungen in großen Mengen vor Ort und in der Cloud. Nomad läuft als einzelne Binärdatei mit geringem Ressourcenbedarf (35 MB) und wird unter macOS, Windows und Linux unterstützt.
Entwickler verwenden declarative Infrastructure-as-Code (IaC) für die Bereitstellung ihrer Anwendungen und definieren, wie eine Anwendung bereitgestellt werden soll. Nomad stellt Anwendungen automatisch nach Ausfällen wieder her.
Bild von Nomad
Nomad Orchestrieren Sie Anwendungen jeglicher Art (nicht nur Container). Es bietet erstklassige Unterstützung für Docker, Windows, Java, VMs und mehr.
Merkmale
- Einfach & Zuverlässig
- Modernisieren Sie Legacy-Anwendungen ohne Umschreiben
- Einfache Föderation im Maßstab
- Bewährte Skalierbarkeit
- Multi-Cloud mit Leichtigkeit
- Native Integrationen mit Terraform, Consul und Vault
Docker-Schwarm
Docker-Schwarm verwendet ein deklaratives Modell. Sie können den gewünschten Zustand des Dienstes definieren, und Docker behält diesen Zustand bei. Docker Enterprise Edition hat Kubernetes mit Swarm integriert. Docker bietet jetzt Flexibilität bei der Wahl der Orchestrierungs-Engine. Docker-Engine-CLI wird verwendet, um einen Schwarm von Docker-Engines zu erstellen, in denen Anwendungsdienste bereitgestellt werden können.
Bild von Docker
Docker-Befehle werden verwendet, um mit dem Cluster zu interagieren. Computer, die dem Cluster beitreten, werden als Knoten bezeichnet, und der Swarm-Manager kümmert sich um die Aktivitäten des Clusters.
Docker Swarm besteht aus zwei Hauptkomponenten:
- Manager – Manager-Knoten weisen Worker-Knoten im Schwarm Aufgaben zu. Ein Anführer wird basierend auf einem Raft-Konsensalgorithmus gewählt. Der Leader kümmert sich um alle Schwarmverwaltungs- und Aufgabenorchestrierungsentscheidungen für den Schwarm.
- Worker-Knoten – Worker-Knoten empfängt Aufgaben vom Manager-Knoten und führt sie aus.
Merkmale
- In Docker Engine integriertes Cluster-Management
- Dezentrales Design
- Deklaratives Dienstmodell
- Skalierung
- Gewünschte staatliche Versöhnung
- Multi-Host-Netzwerk
- Diensterkennung
- Lastverteilung
- Standardmäßig sicher
- Laufende Updates
Docker Compose
Docker Compose dient zum Definieren und Ausführen von Multi-Container-Anwendungen, die zusammenarbeiten. Docker-compose beschreibt Gruppen miteinander verbundener Dienste, die Softwareabhängigkeiten teilen und zusammen orchestriert und skaliert werden.
Sie können eine YAML-Datei (Dockerfile) verwenden, um die Dienste Ihrer Anwendung zu konfigurieren. Anschließend erstellen und starten Sie mit einem docker-compose up-Befehl alle Dienste aus Ihrer Konfiguration.
Eine docker-compose.yml sieht so aus:
version: '3' volumes: app_data: services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0 ports: - 9200:9200 - 9300:9300 volumes: - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data kibana: depends_on: - elasticsearch image: docker.elastic.co/kibana/kibana:6.8.0 ports: - 5601:5601 volumes: - ./kibana.yml:/usr/share/kibana/config/kibana.yml app: depends_on: - elasticsearch image: asadali08527/app:latest ports: - 8080:8080 volumes: - app_data:/var/lib/app/
Sie können Docker Compose verwenden, um den App-Code in mehrere unabhängig voneinander ausgeführte Dienste zu integrieren, die über ein internes Netzwerk kommunizieren. Das Tool bietet CLI zur Verwaltung des gesamten Lebenszyklus Ihrer Anwendungen. Docker Compose konzentrierte sich traditionell auf die Entwicklungs- und Test-Workflows, aber jetzt konzentrieren sie sich auf eher produktionsorientierte Funktionen.
Die Docker Engine kann eine eigenständige Instanz sein, die mit Docker Machine bereitgestellt wird, oder ein vollständiger Docker Swarm-Cluster.
Merkmale
- Mehrere isolierte Umgebungen auf einem einzigen Host
- Volume-Daten beibehalten, wenn Container erstellt werden
- Erstellen Sie nur geänderte Container neu
- Variablen und das Verschieben einer Komposition zwischen Umgebungen
MiniKube
Minikube ermöglicht es Benutzern, Kubernetes lokal auszuführen. Mit Minikube können Sie Anwendungen lokal in einem Kubernetes-Cluster mit einem Knoten auf Ihrem PC testen. Minikube hat die Unterstützung für das Kubernetes Dashboard integriert.
Minikube führt die neueste stabile Version von Kubernetes aus und unterstützt die folgenden Funktionen.
- Lastverteilung
- Multi-Cluster
- Persistente Volumes
- Knotenports
- ConfigMaps und Geheimnisse
- Containerlaufzeit: Docker, CRI-O und Container
- CNI (Container Network Interface) aktivieren
Marathon
Marathon ist für Apache Mesos, das Apps und Frameworks orchestrieren kann.
Apache Mesos ist ein Open-Source-Cluster-Manager. Mesos ist ein Projekt von Apache, das sowohl containerisierte als auch nicht containerisierte Workloads ausführen kann. Die Hauptkomponenten in einem Mesos-Cluster sind Mesos-Agentenknoten, Mesos-Master, ZooKeeper, Frameworks – Frameworks koordinieren mit dem Master, um Aufgaben auf Agentenknoten zu planen. Benutzer interagieren mit dem Marathon-Framework, um Jobs zu planen.
Der Marathon-Planer verwendet ZooKeeper, um den aktuellen Master zum Einreichen von Aufgaben zu finden. Der Marathon-Scheduler und der Mesos-Master verfügen über einen sekundären Master, der ausgeführt wird, um eine hohe Verfügbarkeit sicherzustellen. Clients interagieren mit Marathon über die REST-API.
Merkmale
- Hohe Verfügbarkeit
- Zustandsbehaftete Apps
- Schöne und leistungsstarke Benutzeroberfläche
- Einschränkungen
- Diensterkennung und Lastenausgleich
- Gesundheitschecks
- Veranstaltungsabonnement
- Metriken
- REST-APIs
Bewölken
Bewölken ist ein Open-Source-Cloud-Orchestrierungstool für die Bereitstellungsautomatisierung und das Lebenszyklusmanagement von Containern und Microservices. Es bietet Funktionen wie bedarfsgesteuerte Cluster, automatische Reparatur und Skalierung auf Infrastrukturebene. Cloudify kann die Containerinfrastruktur verwalten und die Dienste orchestrieren, die auf Containerplattformen ausgeführt werden.
Es kann problemlos in Docker und Docker-basierte Container-Manager integriert werden, einschließlich der folgenden.
- Docker
- Docker-Schwarm
- Docker Compose
- Kubernetes
- Apache Mesos
Cloudify kann beim Erstellen, Reparieren, Skalieren und Abbauen von Container-Clustern helfen. Die Container-Orchestrierung ist der Schlüssel zur Bereitstellung einer skalierbaren und hochverfügbaren Infrastruktur, auf der Container-Manager ausgeführt werden können. Cloudify bietet die Möglichkeit, heterogene Dienste plattformübergreifend zu orchestrieren. Sie können Anwendungen mit der CLI und Cloudify Manager bereitstellen.
Rancher
Rancher ist eine Open-Source-Plattform, die Container-Orchestrierung verwendet, die als Cattle bekannt ist. Es ermöglicht Ihnen, Orchestrierungsdienste wie Kubernetes, Swarm, Mesos zu nutzen. Rancher stellt die Software bereit, die zum Verwalten von Containern erforderlich ist, sodass Unternehmen Containerdienstplattformen nicht von Grund auf neu erstellen müssen, indem sie verschiedene Open-Source-Technologien verwenden.
Rancher 2.x ermöglicht die Verwaltung von Kubernetes-Clustern, die auf den vom Kunden angegebenen Anbietern ausgeführt werden.
Die ersten Schritte mit Rancher sind zwei Schritte.
Bereiten Sie einen Linux-Host vor
Bereiten Sie einen Linux-Host mit 64-Bit-Ubuntu 16.04 oder 18.04 (oder einer anderen unterstützten Linux-Distribution) und mindestens 4 GB Arbeitsspeicher vor. Installieren Sie eine unterstützte Version von Docker auf dem Host.
Starten Sie den Server
Um Rancher zu installieren und auszuführen, führen Sie den folgenden Docker-Befehl auf Ihrem Host aus:
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
Die Rancher-Benutzeroberfläche ermöglicht die Verwaltung von Tausenden von Kubernetes-Clustern und -Knoten.
Containerschiff
Containership ermöglicht die Bereitstellung und Verwaltung einer Multi-Cloud-Kubernetes-Infrastruktur. Es ist flexibel und kann mit einem einzigen Tool in öffentlichen, privaten Cloud- und On-Premise-Umgebungen betrieben werden. Es ermöglicht die Bereitstellung, Verwaltung und Überwachung Ihrer Kubernetes-Cluster über alle großen Cloud-Anbieter hinweg.
Containership wird mit Cloud-nativen Tools wie Terraform für die Bereitstellung, Prometheus für die Überwachung und Calico für die Netzwerk- und Richtlinienverwaltung erstellt. Es basiert auf Vanilla Kubernetes. Die Containership-Plattform bietet ein intuitives Dashboard sowie eine leistungsstarke REST-API für komplexe Automatisierung.
Merkmale
- Multicloud-Dashboard
- Audit-Protokolle
- GPU-Instanzunterstützung
- Unterbrechungsfreie Upgrades
- Planbare Master
- Integrierte Metriken
- Echtzeitprotokollierung
- Bereitstellungen ohne Ausfallzeiten
- Unterstützung für dauerhaften Speicher
- Private Registrierungsunterstützung
- Workload-Autoscaling
- SSH-Schlüsselverwaltung
AZK
AZK ist ein Open-Source-Orchestrierungstool für Entwicklungsumgebungen über eine Manifestdatei (Askfile.js), die Entwicklern hilft, häufig verwendete Tools für die Entwicklung von Webanwendungen mit verschiedenen Open-Source-Technologien zu installieren, zu konfigurieren und auszuführen.
AZK verwendet Container anstelle von virtuellen Maschinen. Container sind wie virtuelle Maschinen mit besserer Leistung und geringerem Verbrauch physischer Ressourcen.
Azkfile.js-Dateien können wiederverwendet werden, um neue Komponenten hinzuzufügen oder neue von Grund auf neu zu erstellen. Es kann gemeinsam genutzt werden, was eine vollständige Parität zwischen den Entwicklungsumgebungen auf den Maschinen verschiedener Programmierer gewährleistet und die Wahrscheinlichkeit von Fehlern während der Bereitstellung verringert.
GKE
GKE bietet eine vollständig verwaltete Lösung für die Orchestrierung von Containeranwendungen auf der Google Cloud Platform. GKE-Cluster werden von Kubernetes unterstützt. Sie können mit Clustern über die Kubernetes-CLI interagieren. Kubernetes-Befehle können verwendet werden, um Anwendungen bereitzustellen und zu verwalten, Verwaltungsaufgaben auszuführen, Richtlinien festzulegen und den Zustand bereitgestellter Workloads zu überwachen.
Bild von GCP
Erweiterte Verwaltungsfunktionen von Google Cloud sind auch mit GKE-Clustern verfügbar, z. B. Load-Balancing von Google Cloud, Knotenpools, automatische Skalierung von Knoten, automatische Upgrades, automatische Knotenreparatur, Protokollierung und Überwachung mit der Operations Suite von Google Cloud.
Google Cloud bietet CI/CD-Tools, mit denen Sie Anwendungscontainer erstellen und bereitstellen können. Sie können Cloud Build verwenden, um Container-Images (z. B. Docker) aus einer Vielzahl von Quellcode-Repositorys zu erstellen, und Container Registry zum Speichern Ihrer Container-Images.
GKE ist eine unternehmenstaugliche Lösung mit vorgefertigten Bereitstellungsvorlagen.
Sind Sie daran interessiert, GKE zu lernen? Schau dir das an Anfängerkurs.
AKS
AKS ist ein vollständig verwalteter Kubernetes-Dienst, der von Azure angeboten wird und serverloses Kubernetes, Sicherheit und Governance bietet. AKS verwaltet Ihren Kubernetes-Cluster und ermöglicht Ihnen die einfache Bereitstellung containerisierter Anwendungen. AKS konfiguriert automatisch alle Kubernetes-Master und -Knoten. Sie müssen nur die Agentenknoten verwalten und warten.
Bild von Azure
AKS ist kostenlos; Sie zahlen nur für Agentenknoten innerhalb Ihres Clusters und nicht für Master. Sie können einen AKS-Cluster im Azure-Portal oder programmgesteuert erstellen. Azure unterstützt auch zusätzliche Funktionen wie erweiterte Netzwerke, Azure Active Directory-Integration und Überwachung mit Azure Monitor.
AKS unterstützt auch Windows Server-Container. Die Leistung des Clusters und der bereitgestellten Anwendung kann von Azure Monitor überwacht werden. Protokolle werden in einem Azure Log Analytics-Arbeitsbereich gespeichert.
AKS wurde als Kubernetes-konform zertifiziert.
AWS-EKS
AWS-EKS ist ein vollständig verwalteter Kubernetes-Dienst. Mit AWS können Sie Ihren EKS-Cluster mit AWS Fragrate ausführen, einer serverlosen Berechnung für Container. Fragrance macht die Bereitstellung und Verwaltung von Servern überflüssig und ermöglicht die Bezahlung pro Ressource und Anwendung.
AWS ermöglicht die Verwendung zusätzlicher Funktionen mit EKS wie Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups und Access Management (IAM), Überwachung, Skalierung und Load-Balancing-Anwendungen. EKS lässt sich in AWS App Mesh integrieren und bietet eine native Kubernetes-Erfahrung. EKS führt das neueste Kubernetes aus und ist Kubernetes-konform zertifiziert.
Fazit
Letztendlich hoffe ich, dass die obige Liste ein angemessenes Verständnis der verschiedenen Container-Orchestrierungstools vermittelt hat, und jetzt wird es je nach Anwendungsfall einfacher sein, sich für das beste zu entscheiden.
Informieren Sie sich als Nächstes über die Kubernetes-Verwaltungssoftware.