kalafoto - Fotolia
Azure Container Instances bieten Opt-Out-Option für Cluster
Die Containers-Plattform Azure Container Instances unterstützt kein eigenes Clustering, verfügt aber über einen Open-Source-Connector für erhöhte Skalierbarkeit.
Eine serviceähnliche Container-Instanz-Bereitstellungsmethode entfernt einige Blockaden für containerbasierte Anwendungen in der Public Cloud.
Public-Cloud-Anwendungen haben zweifellos eine Menge Vorteile: nutzungsabhängige Kosten, minimale Implementierungszeit, leicht skalierbare Kapazitäten, reduzierter Verwaltungsaufwand, keine Investitionskosten. Damit containerbasierte Anwendungen diese Vorteile der Public Cloud nutzen können, benötigen sie in der Regel eine Grundlage in Form von virtuellen Maschinen (VMs). Die Server-Virtualisierungs-Schicht unterstützt die Container-Runtime-Engine ebenso wie Cluster-Management-Software, Service Discovery und ein Container-Repository.
In vielen Container-Deployment-Szenarien stellt die VM-Schicht allerdings eine unnötige Hürde dar. Damit Unternehmen eine Pilot-Container-Implementierung ausführen, Testumgebungen auf- und abbauen oder mit Containern anderweitig in bestimmten Situationen experimentieren können, muss der Cloud-Provider die Planung und Implementierung optimieren.
Mit Azure Container Instances (ACI) beschleunigt der Benutzer in solchen Szenarien Container-as-a-Service-Anwendungen: Er kann den Service bei Bedarf starten und stilllegen, wobei der Infrastruktur- oder Admin-Overhead gering bleibt. ACI – nicht zu verwechseln mit dem Cisco-Produkt Application Centric Infrastructure – verwaltet die zugrunde liegende Laufzeit-Infrastruktur für Benutzer, die mit einzelnen Containern oder Containergruppen arbeiten.
Azure Container Instances haben Vorteile, aber auch Grenzen. Potenzielle Anwender sollten vor allem die Beziehung der Azure Container Instances zu Orchestrierungssystemen wie Kubernetes und geeigneten Anwendungsfällen verstehen.
Eigenschaften der Azure Container Instances
Ähnlich wie Serverless-Angebote, zum Beispiel Azure Functions und AWS Lambda, oder eine Platform as a Service (PaaS) wie Azure Web Apps, verwandelt Microsofts ACI Container in einen leichtgewichtigen Dienst: Der Service kann schnell instanziiert und bei Bedarf genutzt und nach Belieben wieder stillgelegt werden kann.
Azure Container Instances sind sofort verfügbar und haben ein sekundengenaues Preismodell. Man kann einen Container zum Beispiel nur für eine Minute oder weniger nutzen und zahlt entsprechend weniger. Die wichtigsten PaaS-Stacks unterstützen eine breite Auswahl an Sprachen, doch die Palette ist nicht unbegrenzt.
Im Gegensatz zu einem PaaS eignet sich ACI für Anwendungen, die in einer beliebigen Sprache und beliebigen Versionen geschrieben wurden. Die Azure Container Instances führen ein anpassbares Container-Image aus, so dass der Benutzer die Laufzeit-Image-Konfiguration mit dem richtigen Entwicklungs-Framework, der richtigen Version und der richtigen Systemkonfiguration anpassen kann.
ACI bietet auch eingebettete Sicherheit auf Hypervisor-Ebene. Microsoft dokumentiert die Details nicht, aber angesichts der Beschreibung der ACI-Isolierung können wir davon ausgehen, dass der Dienst Hyper-V-Container verwendet. Dieses Setup würde jede Container-Instanz in eine verschachtelte Virtualisierung auf eine Azure-VM bringen.
Die Kapazität ist anpassbar, mit konfigurierbarer CPU-Core-Anzahl und Speicher. Standardmäßig sind ACI-Container zustandslos, aber der Dienst unterstützt Azure-Dateifreigaben (für Linux-Container nur zum Zeitpunkt des Schreibens), was bedeutet, dass Instanzen eine oder mehrere Freigaben zum Lesen und Schreiben von Anwendungsdaten und -status einbinden können.
Die Azure Container Instances unterstützen Standard-Docker-Images, die aus einer externen Registry, wie dem öffentlichen Docker Hub oder der Azure Container Registry, gezogen werden können.
Es gibt allerdings auch Einschränkungen für ACI. So unterstützt ACI nur Public IP, wobei künftig private virtuelle Netzwerke und andere Azure-Netzwerkdienste, wie zum Beispiel Load Balancer, unterstützt werden sollen.
Obwohl ACI sowohl mit Linux- als auch mit Windows-Container-Images funktionieren, werden nicht alle Windows-Container-Funktionen unterstützt. Container können bis zu vier virtuelle CPUs und 14 GB Memory haben. Leistungsgrenzen, wie zum Beispiel die maximale Rate der Container-Erstellung und -Löschung, sind hier dokumentiert. Die Neuheit von Azure Container Instances bedeutet, dass sie möglicherweise noch nicht in allen Regionen verfügbar sind, in denen ein Unternehmen tätig ist.
Ähnlich wie bei Kubernetes Pods betreiben ACIs Multi-Container-Gruppen auf einem gemeinsamen Host, Netzwerk und Storage. Diese Ressourcen werden gemeinsam für den Einsatz eingeplant. Man sollte sich auf Containergruppen verlassen, um eine Anwendung in mehrere Module aufzuteilen: eines für den Kernanwendungscode, ein weiteres für die Protokollierung und Überwachung und ein drittes, um beispielsweise Daten aus einer Datenbank oder einem Quellcode-Repository zu beziehen.
Was kostet es? Die ACI-Preise von Microsoft basieren auf einer Flatrate für jede erstellte Instanz und einer variablen Rate, die von der Größe des Instance-Speichers, der Kernanzahl und der in Sekundenschritten gemessenen Zeit abhängt. Zum Beispiel würde eine Instanz mit zwei Kernen und drei GB, die 50 Mal am Tag erstellt und jeweils zweieinhalb Minuten lang genutzt wird, 17,25 US-Dollar pro Monat kosten. Der Preis für Container Instances variiert allerdings je nach Region und Währung.
Im Allgemeinen können Anwendungen mit sehr variablen oder sporadischen Workloads via ACI kostengünstiger betrieben werden als mit herkömmlichen Cloud-Hosting-Methoden. Allerdings gibt es keine einfache Möglichkeit, die Kosten generell für mehrere Anbieter zu vergleichen, da das Anwendungsdesign und die Workload-Eigenschaften die Kosten stark beeinflussen.
Die Geschwindigkeit, mit der Container-Instanzen bereitgestellt werden können, die Fähigkeit, den Zustand aufrechtzuerhalten, und das granulare Preismodell für ACI machen besonders den Einsatz bei Projekten sinnvoll, die schnell bereitgestellt und wieder stillgelegt werden sollen. Man sollte am besten über den Online-Preisrechner von Microsoft die Gebühren für einfache oder komplexe Szenarien berechnen und mit anderen Azure-Diensten vergleichen.
ACI und Container-Cluster, Kubernetes
Mit Azure Container Instances lassen sich keine Multi-Node-Container-Cluster bereitstellen. Dies beschränkt die Benutzer jedoch nicht auf Containergruppen auf einer einzigen Maschine. Microsoft hat einen Open-Source-ACI-Connector für Kubernetes entwickelt, der es Kubernetes ermöglicht, die Azure Instances zu verwenden.
Da der Azure Container Service (ACS) von Microsoft Kubernetes als Cluster-Management- und Orchestrierungs-Plattform nutzt, können Benutzer ACI mit Container-Instanzen – die auf selbst verwalteten Clustern laufen – über VM-Instanzen mischen und abgleichen. Der ACI-Service findet das Host-Ziel für einen bestimmten Container, wenn ACS mit ACI gepaart wird.
Die inhärente Skalierbarkeit des Dienstes bedeutet, dass ein Host immer verfügbar ist. Der einzige Zweck von Kubernetes ist es, Bereitstellung, Upgrades und Skalierung von Multi-Container-Workloads zu verwalten. Es gibt einige hybride Szenarien für ACI, wenn sie mit Kubernetes und Azure Compute Instances kombiniert werden. Man sollte ACI in diesem Zusammenhang für Burstable Loads und schnelle Skalierung berücksichtigen, während herkömmliche VMs in einem Kubernetes-Cluster stationäre Workloads oder solche mit besser vorhersehbaren Skalierungsmustern verarbeiten.
Beste ACI-Anwendungen
Während ACI mit Kubernetes und anderen Azure-Diensten im Rahmen von Composite Application Designs zusammenarbeitet, besteht das Ziel-Bereitstellungsmodell vollständig aus containerisierten Anwendungen. Diese können von einer einzigen Containergruppe bedient werden und benötigen somit nicht mehr als 60 Quad-Core-Container. Für solche Cloud-native Anwendungen ist ACI eine interessante Option.
Microservices mit mehreren ereignisgesteuerten Komponenten profitieren vom nahezu sofortigen Container-Start und dem granularen Abrechnungsmodell von ACI. Man sollte auch die Möglichkeit beachten, Test- und Entwicklungsumgebungen getrennt von der Produktion zu erstellen und eine Sandbox für Container-Experimente zu erstellen.
ACI versus AWS Fargate, Angebote von Google
Auf die Tatsache, dass Azure Container Instances der erste reine, VM-lose Containerservice ist, konterte AWS mit Fargate, um Container Cluster zu abstrahieren. Derzeit ist Fargate, das auf der re:Invent im November 2017 vorgestellt wurde, nur in einer einzigen AWS-Region verfügbar. Die Dokumentation ist ebenfalls spärlich. Ein Early Adopter, der beide Angebote verglichen hat, weist darauf hin, dass Fargate „mit der kompletten Konfigurations- und Einrichtungsflexibilität und den Möglichkeiten von Elastic Container Service ausgestattet ist.“
Die Google Cloud Platform bietet nichts direkt Vergleichbares zu ACI. Jedoch hat Google Kubernetes Engine, sein verwalteter Kubernetes-Dienst, der Google Compute Engine Compute-Instanzen verwendet, aufgrund der Effizienz von GCE und eines granularen Abrechnungsmodells ähnliche Eigenschaften.
GCE-Instanzen können innerhalb einer Minute starten, was ein ACI-ähnliches, ereignisgesteuertes Bereitstellungsmodell für Kubernetes-Cluster-Knoten ermöglicht. Da die Google App Engine PaaS jede Instanz in einem Container ausführt, können Benutzer einen Managed Container Service über GAE in einer sogenannten „flexiblen Umgebung“ aufbauen, die aus einer benutzerdefinierten Laufzeitumgebung besteht, die als Dockerfile spezifiziert ist.
Azure Container Instances und AWS Fargate sind ohne Zweifel der Beginn eines Trends. Man kann von allen führenden Cloud-Anbietern erwarten, dass sie das Konzept der vollständig verwalteten Container-Services künftig umsetzen und erweitern werden. Diese Container-Services, die den Nutzer von der Infrastruktur isolieren, haben viele Vorteile.
Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!