CIO Guide zu Kubernetes - Cloud Transformation Reloaded

Lesezeit: 15 Minuten

alt text

INTRO

Ein Grund für die schnelle Verbreitung von Kubernetes (abgekürzt: K8s) liegt sicherlich darin, dass die Technologie in jeder Cloud funktioniert. Da die meisten Unternehmen ihre vorhandenen On-Premise-Rechenzentren und die Public Cloud gemeinsam nutzen möchten, ist der Bedarf an hybriden Cloud-Technologien von entscheidender Bedeutung – nicht nur im Hinblick auf Modernisierung, sondern auch zur Konservierung von Geschäftsanwendungen.

Container und Kubernetes sind die nächste Stufe der Virtualisierung – infrastruktur-agnostisch!

K8s.HISTORIE

Containerisierung

alt text Quelle: Github CNCF

Bereits 1979 gab es die ersten Techniken zur Containerisierung, wie zum Beispiel Chroot, Jails oder Solaris Zones. Im Jahr 2006 kam ein Prozess-Container names Cgroups hinzu. In 2008 wurde durch die LXC-Containers die Virtualisierung innerhalb eines Betriebssystems populärer.

Auch Google experimentierte bereits 2003/04 zu diesem Thema und veröffentlichte das “Borg System". Dieses System war ursprünglich für das interne Clustermanagement angedacht, da zu diesem Zeitpunkt Google eine neue Version seiner Suchmaschine entwickelte.

Im Jahre 2013 nahm die Software-Containerisierung durch Docker richtig Fahrt auf und wurde massentauglich. Kurz darauf stellte Google seinen Clustermanagement-Nachfolger von Borg zu Omega vor. Die ersten Anzeichen einer zentralen Orchestrierungsplattform für Container waren geboren.

Kubernetes

alt text

Kubernetes, abgekürzt K8s = K +{8 Zeichen} +{s} ergibt K ubernete s

Am 7. Juni 2014 stellte Google die erste, offizielle Version von Kubernetes vor (hier geht’s zum ersten Commit) und bereits im Juli 2014 traten Microsoft, Red Hat, IBM und Docker der Kubernetes-Community bei.

Dadurch bekam das Projekt Kubernetes extremen Aufwind. Kaum ein Jahr später, am 21. Juli 2015, wurde bereits das erste Release V1.0 bereitgestellt. Parallel gab es noch weitere Projekte für die Orchestrierung von Containern, z.B. Apache Mesos und Docker Swarm.

Darüber hinaus rief Google mit der Linux Foundation zusammen eine neue Initiative ins Leben, die Cloud Native Computing Foundation. Hierrüber wurden ab sofort alle Cloud-relevanten Technologien bewertet und in entsprechenden Communities organisiert.Das Ziel: Die Etablierung von Cloud-Standards.

Im Februar 2016 fand die erste Großkonferenz in Europa statt. Kubernetes GOES MAINSTREAM - (KubeCON EU 2016). Sie zog über 500 Teilnehmer an - aus allen Industrien und mit einer Vielzahl an Use-Cases im Bereich Docker/Kubernetes.

Ab diesem Zeitpunkt wurde greifbarer, wo die nächste technologische IT-Revolution stattfinden wird: Docker/Kubernetes als Zwischenschritt zur infrastruktur-losen Nutzung, so wie z.B. Serverless Computing oder auch Function-as-a-Service (FaaS).

Die Version 1.7 im Juni 2017 brachte viele Erweiterungen, um nun auch im Enterprise Umfeld Fuß zu fassen. Zusätzlich wurden die ersten Versionen von Managed Kubernetes Infrastrukturen durch AWS und Microsoft Azure vorgestellt.

Die aktuellen Kubernetes Versionen sind hier zu finden, https://github.com/kubernetes/kubernetes/releases - Stand Ende Mai 2020 ist die Version 1.18.3 aktuell.

WAS IST KUBERNETES?

alt text Quelle: CLOUDETEER

Kubernetes selbst dient als Orchestrierungsplattform für Container Umgebungen. Darüber hinaus werden alle Netzwerk-relevanten Kommunikationen sowohl zwischen den Containern, als auch die externe Kommunikation zentral gesteuert.

Kubernetes Cluster bestehen aus mindestens einem Master und mehreren Nodes. Der Master hält in der etcd3 alle relevanten Konfigurationen und synchronisiert diese mit allen Nodes.

Des Weiteren werden Anwendungen in sogenannten POD’s (virtuelle Container die in wenigen Sekunden gestartet sind) auf den Nodes bereitgestellt und die entsprechenden Dienste automatisch im Cluster verfügbar gemacht. Es können sowohl Stateless-, als auch Stateful-Anwendungen eingesetzt werden.

Jeder renommierte Hersteller und Cloud Provider ist in der Kubernetes-Community aktiv, siehe Cloud Native Computing Foundation.

WARUM KUBERNETES?

Cloudtechnologien forcieren neue Herangehensweisen im Bereich Softwareentwicklung und die langersehnte Unabhängigkeit von der IT. Heutige Cloud-native Entwickler warten nicht mehr auf Bereitstellung von virtuellen Maschinen, Datenbanken, Netzwerken und Firewall-Freischaltungen!

ALLES wird zu Code, egal ob klassische Infrastrukturkomponenten oder höherwertige Dienste wie Datenbanken, oder eben Docker-/Kubernetes Umgebungen. Container und Kubernetes bieten hier genau die Komponenten, die jeder Entwickler benötigt - schnelle, standardisierte, skalierbare Infrastruktur und eine automatisierte Bereitstellung. Somit kann sich der Entwickler gezielt auf seine Aufgabenstellungen konzentrieren und muss sich nicht mit IT-Infrastruktur auseinandersetzen.

Heutige Anwendungen werden als Container bereitgestellt. Auch die meisten kommerziellen Softwareanbieter unterstützen hier Docker und meist auch Kubernetes.

Immer häufiger werden sogar Docker/Kubernetes als Unternehmensstandard forciert, um die Anwendungen in verschiedenen Cloud-Infrastrukturen flexibel bereitzustellen.

HERAUSFORDERUNGEN

Leider hören wir des Öfteren, dass Kubernetes als Heilsbringer für alles genannt wird. Speziell bei Cloudmigrationen wird gerne darauf verwiesen, bestehende VM’s zu Container zu migrieren!

Sicherlich gibt es fast keine Workloads mehr, welche nicht containerisiert und mittels Kubernetes bereitgestellt werden können. Die Frage, die leider selten gestellt wird ist die nach dem Verhältnis des erforderlichen Aufwands zum wirklichen Mehrwert. Hier sollte der Fokus auf Modernisierung liegen. Der Zweck sollte nicht sein, altgediente, monolithische Anwendungen umzubiegen!

Viele Unternehmen haben in den letzten Jahren versucht, ihre eigenen Kubernetes-Cluster aufzubauen und als Private Cloud zu etablieren. Sicherlich ist dies mit Tools wie VMware Pivotal, Rancher Labs oder Red Hat OpenShift möglich. Die Implementierung ist jedoch häufig komplex. An folgenden Gründen scheitern die Implementierungen am häufigsten:

  • fehlendes Knowhow, da primär Linux-basierte Systeme
  • automatisierte Bereitstellung mittels Infrastructure-as-Code ist Grundvoraussetzung
  • unterschätzter Aufwand zur Wartung & Aktualisierung von Kubernetes Clustern
  • Sicherheitsbedenken, durch unzureichende Expertise
  • Fokus auf grafische Oberflächen zur Verwaltung
  • Netzwerkanforderungen, hier im speziellen die Eigendynamik von K8s Load Balancern

EMPFEHLUNGEN

  • Kubernetes unterstützt viele Cloudmigrationen mit smarten Möglichkeiten, jedoch ist es per se nicht für alle Anwendungen geeignet. Lift&Shift Migrationen von VM‘s zu Docker und Kubernetes bedeuten meist hohe Aufwände. Jedoch ist Kubernetes zur Modernisierung von Anwendungen und Aufsplittung in Microservices sehr gut geeignet!

  • Nutzen Sie Managed Kubernetes Umgebungen bei Public Cloud Providern (Bsp. AWS Fargate, Microsoft Azure Kubernetes Services (AKS) oder Google Kubernetes Engine (GKE). Diese Lösungen bieten eine professionelle Clusterumgebung, nahtlose Integration in Netzwerke, Sicherheitskomponenten und einfache Skalierung im laufenden Betrieb!

  • Bei hohen Sicherheitsanforderungen und Nutzung im eigenen Rechenzentrum, greifen Sie auf eine der etablierten Plattformen wie Red Hat OpenShift, VMware Tanzu oder Rancher zu. Die OpenShift-Implementierung ist auch auf Azure zertifiziert.

  • Aufbau von eigener Basisexpertise im Kubernetes-Umfeld wird angeraten (Bsp. Certified Kubernetes Administrator). Bedienen Sie sich externer und zertifizierter Experten, die bereits erfolgreich Kubernetes-Infrastrukturen betreiben – wie CLOUDETEER!

  • Kubernetes ist per se nicht sicher. Jedoch gibt es mittlerweile eine Vielzahl an Best-Practices (Bsp. CIS Kubernetes Benchmark) und entsprechende Tools (Bsp. Kube-Bench) zur Überprüfung. Diese sollten Bestandteile Ihres Sicherheitskonzeptes sein!

  • Lernen Sie von den Besten: Die Cloud Native Computing Foundation KubeCon ist hier die perfekte Anlaufstelle!

FAZIT

Kubernetes ist (wie die Nutzung von Public Clouds) keine Glaubensfrage mehr, sondern hat sich zu einem Industriestandard entwickelt!

SlashData hat im Mai 2020 eine weltweite Umfrage bei Entwicklern durchgeführt.

alt text
Quelle: Mai 2020,Silicon SlashData & CNCF

Des Weiteren gibt es mit Apache Mesos und Docker Swarm zwei Alternativen. Jedoch hat Kubernetes klar das Rennen gewonnen und die beiden genannten Alternativen setzen nun ebenso auf Kubernetes.

Kubernetes löst nicht die Probleme von monolithischen Anwendungen, um daraus moderne Microservices zur Verfügung zu stellen, jedoch lassen sich komplexe Abhängigkeiten leichter modernisieren und vereinfachen.

Container-as-a-Service (CaaS) auf Public Cloud Infrastrukturen wie AWS oder Microsoft Azure wird immer häufiger genutzt, da hier eine professionelle Integration zu den bestehenden Clouddiensten, Netzwerk- und Sicherheitstechnologien gewährleistet wird. Die wiederrum hochspezialisierten Container-Services wie Loodse Kubermatic oder Giant Swarm geraten durch die neuesten Kubernetes-Versionen in eine Nische. Die zusätzliche Investition zum Mehrwert ist hier sehr gering.

Die Kubernetes-Technologie selbst ist mittlerweile ausgereift und bei tausenden von Unternehmen produktiv im Einsatz. Die Komplexität sollte hier aber nicht unterschätzt werden und erfordert fundiertes Wissen, um eine stabile und wirtschaftlich sinnvolle Container-Infrastruktur bereitzustellen.

Auch hier gilt wieder: nicht die Technologie ist die Herausforderung, sondern die Neuausrichtung der Unternehmens-IT!


Ich freue mich auf Rückmeldungen und Ihre Meinung zu diesem Thema!

Gerald Fehringer
CTO, Founder
E-Mail: gf |at] cloudeteer.de
Twitter: @zerohat