Serviceskalierung durch Native Cloud Computing
In der Cloud präsent zu sein ist nur der erste Schritt. Die besonderen Möglichkeiten von Cloud Computing zu nutzen ist der wichtigere Schritt. Eine dieser Möglichkeiten ist die fast uneingeschränkte Skalierbarkeit der bereitgestellten Anwendungen bzw. Services. Dazu müssen die verwendeten Dienste jedoch cloud-native sein und Orchestrierungsservices wie Kubernetes verwenden. Unser Cloud Experte gibt einen Überblick über die Architektur eines solchen Systems.
Zur Vorbereitung müssen über Container die Software und die benötigten Bibliotheken auf der Ebene des Betriebssystems gebündelt werden. Container nutzen den Kernel des Host Betriebssystems, sind jedoch auf Prozess- und Datei-Ebene von anderen Containern und vom Host getrennt. Der Ressourcenverbrauch von Containern kann genau konfiguriert werden.
Um diese Container in einem Cluster von virtuellen oder physischen Rechnern zu betreiben, bedient man sich eines Container Orchestrators. Der dominierende Container Orchestrator mit einem Marktanteil (je nach Umfrage zwischen 80 und 90 Prozent) ist Kubernetes. Docker Swarm und Apache Mesos sind alternative Produkte, spielen jedoch am Markt nur eine geringe Rolle.
Kubernetes wurde ursprünglich von Google entwickelt und 2014 als Open Source Plattform zum automatischen Deployment, der Skalierung und dem Management von containerisierten Applikationen veröffentlicht. Heute wird Kubernetes von der Cloud Native Computing Foundation (CNCF) verwaltet. Die CNCF wurde 2015 als Nonprofit-Organisation gegründet und ist Teil der Linux Foundation. Damit sollte auch die Weiterentwicklung in der Zukunft gesichert sein.
Kubernetes kann man entweder selbst On-Premise oder in der Cloud installieren beziehungsweise einen gemanagten Kubernetes Cluster nutzen. Laut Marktforschung (https://security.stackrox.com/state-of-containers-and-kubernetes-security-report-winter-2020.html, nicht mehr online) sind selbst-gemanagte Kubernetes Installationen rückläufig und die Nutzung der gemanagten Kubernetes Cluster Angebote wächst stark.
Architektur eines gemanagten Kubernetes Clusters
Ein Kubernetes Cluster (K8s) besteht aus 2 Komponenten:
![](https://spiritinprojects.com/wp-content/uploads/2020/08/sip_cloud_management_azure.png)
- Die Control Plane übernimmt die Steuerung des K8s. Sie wird vom Provider gemanagt und oftmals sogar kostenlos zur Verfügung gestellt.
- Nodes, auf denen die in Container verpackten Applikationen ablaufen. Die Nodes, auf die die Applikationen deployt werden, werden vom Kunden gemanagt und wie virtuelle Maschinen abhängig vom Prozessortyp, der Anzahl der virtuellen VPUs und dem RAM verrechnet. Nodes werden in Nodepools zusammengefasst.
Implementierung eines gemanagten Kubernetes Clusters (K8s)
Die Installation des K8s kann zum Beispiel über die Command Line bzw. das Portal des Cloud-Providers oder Werkzeuge wie zum Beispiel Rancher oder Terraform durchgeführt werden.
Bei der Installation wird die Anzahl der Nodes und die Kubernetes Version angegeben. Anhängigkeit vom Provider kann eine höhere Verfügbarkeit für die Control Plane angegeben werden, Nach 5 bis 15 Minuten steht dann der K8s zur Verfügung. Die Leistung des K8s kann durch Hinzufügen bzw. Wegnehmen von Nodes jederzeit verändert werden. Die im K8s konfigurierten Nodes werden wie VMs unabhängig von ihrer Auslastung vom Provider verrechnet. Autoskalierung ist eine Möglichkeit, um die Kosten zu optimieren.
Autoskalierung in der Cloud
Über die Autoskalierung können einer Applikation bei Bedarf automatisch zusätzliche Ressourcen (CPU und RAM) zur Verfügung gestellt werden. Die Regeln dazu können mit Parametern wie z.B Anzahl der Requests, CPU- bzw. RAM-Auslastung vom Administrator vorab konfiguriert werden. Damit entfallen manuelle Schritte in der Betriebsführung und es kann blitzschnell reagiert werden. Sowohl das Hochskalieren als auch das Reduzieren von Ressourcen können automatisch durchgeführt werden.
Dabei werden sowohl die Anzahl der Nodes je nach Konfiguration automatisch angepasst, als auch die Applikationen/Services in zusätzlichen Instanzen gestartet bzw. gestoppt. Dies erfolgt über sogenannte Pods.
Ein Pod ist das einfachste ausführbare Objekt in einem Kubernetes Cluster. In einem Pod können ein oder mehrere Container ablaufen. Ein Pod stellt eine Instanz einer Applikation dar. Durch das Starten von zusätzlichen Pods wird die Applikation hochskaliert (= horizontale Skalierung).
Praktisches Beispiel für autoscaling in der Cloud
![](https://spiritinprojects.com/wp-content/uploads/2020/08/sip_cloud_autoscale-1030x675.jpg)
Am obigen Beispiel sieht man sehr schön, wie der Autoscaler bei Erreichen einer vom Administrator definierten kritischen Prozessorlast beginnt, zusätzliche Pods zu starten (rechte untere Grafik). Da die bestehenden Nodes jedoch über dem Lastlimit sind und keine zusätzlichen Pods starten können (ersichtlich an den kleinen roten Peaks in der rechten unteren Grafik), müssen zuerst zusätzliche Nodes hochgefahren werden. Mit Hilfe der zusätzlichen Nodes und Pods kann die Applikation das erhöhte Nutzungsvolumen bewältigen.
Das Ziel: Eine Cloud-Strategie für Ihr Unternehmen
Um eine vollständige Cloud-Strategie und eine sinnvolle Umsetzung für Ihr Business zu entwickeln ist es wichtig, sich mit Cloud-Native Methoden auseinanderzusetzen. Ein Grundverständnis für die Funktionsweise von Skalierung in der Cloud kann Ihnen helfen, Anwendungsfälle und Prozesse, die dadurch profitieren, besser zu identifizieren. Die einfache und umfassende Skalierbarkeit ist eine der vielen Möglichkeiten, die man dabei gewinnen kann. In unseren Kursen und bei unserer Beratung unterstützen wir Sie dabei, die Möglichkeiten von Cloud-Computing für Ihr Unternehmen zu nutzen.