Kubernetes (K8s)
Was ist Kubernetes?
Kubernetes, aufgrund der Anzahl der Buchstaben zwischen K und S auch als K8s bezeichnet, ist eine Open-Source-Plattform zur Verwaltung containerisierter Anwendungen in privaten, öffentlichen und hybriden Cloud-Umgebungen. Unternehmen können Kubernetes auch zur Verwaltung von Microservice-Architekturen einsetzen. Container und Kubernetes werden bei den meisten Cloud-Anbietern bereitgestellt.
Anwendungsentwickler, IT-Systemadministratoren und DevOps-Ingenieure verwenden Kubernetes, um mehrere Anwendungscontainer über Cluster von Knoten hinweg automatisch bereitzustellen, zu skalieren, zu warten, zu planen und zu betreiben. Container laufen auf einem gemeinsamen Betriebssystem (OS) auf Host-Rechnern, sind jedoch voneinander isoliert, sofern der Benutzer keine Verbindung zwischen ihnen herstellt. Kubernetes wird kontinuierlich weiterentwickelt und hat sich zu einem Standard für Containerorchestrierung in Cloud-nativen Umgebungen etabliert.
Kubernetes auf einen Blick
Kubernetes (K8s) ist eine Open-Source-Plattform zur Verwaltung containerisierter Anwendungen in Private, Public und Hybrid Clouds. Es automatisiert Bereitstellung, Skalierung, Wartung und Überwachung von Containern über Cluster hinweg. Kubernetes unterstützt Microservices, DevOps-Pipelines, Edge Computing, Multi-Cloud- und Hybrid-Cloud-Umgebungen. Die Plattform ist flexibel, skalierbar und selbstheilend, bietet hohe Sicherheit und erleichtert Entwicklerteams die Verwaltung komplexer Anwendungen.
Wofür wird Kubernetes verwendet?
Unternehmen verwenden Kubernetes in erster Linie zur Verwaltung und Zusammenführung von Containern sowie zur Verwaltung von Passwörtern, Tokens, Secure-Shell-Schlüsseln (SSH) und anderen sensiblen Informationen. Unternehmen finden Kubernetes jedoch auch in anderen Fällen nützlich, darunter die folgenden:
- Orchestrierung von Containern: Kubernetes dient in erster Linie als Plattform für die Orchestrierung von Containern. Es automatisiert die Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen, sodass sich Entwickler auf das Schreiben von Code konzentrieren können, anstatt sich um die Verwaltung der Infrastruktur zu kümmern.
- Verbesserung der Serviceerkennung: Unternehmen können Kubernetes verwenden, um die Serviceerkennung für containerisierte Anwendungen in einem Netzwerk automatisch zu entdecken und anzupassen.
- Verwaltung von Hybrid- und Multi-Cloud: Kubernetes kann Unternehmen dabei unterstützen, lokale Workloads in die Cloud und über mehrere Clouds hinweg zu erweitern. Das Hosten von Knoten in mehreren Cloud-Umgebungen und Verfügbarkeitszonen oder Regionen erhöht die Ausfallsicherheit und bietet Unternehmen Flexibilität bei der Auswahl verschiedener Service-Konfigurationsoptionen. Durch Tools wie Anthos, Azure Arc oder Red Hat OpenShift werden Multi-Cluster- und Multi-Cloud-Szenarien noch stärker unterstützt.
- Erweiterung der PaaS-Optionen: Kubernetes kann serverlose Workloads unterstützen, was letztendlich zu neuen Arten von Platform-as-a-Service-Optionen (PaaS) führen kann, von verbesserter Skalierbarkeit und Zuverlässigkeit bis hin zu einer granulareren Abrechnung und geringeren Kosten. Frameworks wie Knative oder KEDA ermöglichen serverlose Funktionen direkt auf Kubernetes-Clustern.
- Bewältigung datenintensiver Workloads: Mit dem Dienst Google Cloud Dataproc for Kubernetes können IT-Teams Apache-Spark-Jobs ausführen, bei denen es sich um groß angelegte Datenanalyse-Anwendungen handelt. Auch Plattformen wie Kubeflow unterstützen Machine-Learning-Workloads auf Kubernetes.
- Erweiterung des Edge Computing: Unternehmen, die Kubernetes bereits in ihren Rechenzentren und Clouds einsetzen, können damit diese Funktionen auf Edge-Computing-Umgebungen ausweiten. Dies kann kleine Serverfarmen außerhalb eines traditionellen Rechenzentrums – oder in der Cloud – oder ein industrielles Internet-of-Things-Modell (IoT) umfassen. Edge-Computing- und IoT-Komponenten können eng mit Anwendungskomponenten im Rechenzentrum gekoppelt werden, sodass Kubernetes bei deren Wartung, Bereitstellung und Verwaltung helfen kann. Leichtgewichtige Distributionen wie k3s oder MicroK8s sind für Edge- und IoT-Szenarien weit verbreitet.
- Microservices-Architektur: Kubernetes hostet häufig Microservices-basierte Systeme. Es bietet die erforderlichen Tools, um wichtige Probleme mit Microservices-Architekturen zu bewältigen, darunter Fehlertoleranz, Load Balancing und Service Discovery.
- DevOps-Praktiken: Kubernetes spielt eine wichtige Rolle bei DevOps-Praktiken, da es eine schnelle Möglichkeit zur Entwicklung, Bereitstellung und Skalierung von Anwendungen bietet. Durch die Unterstützung von Pipelines für kontinuierliche Integration/kontinuierliche Entwicklung ist es möglich, Software schneller und effektiver bereitzustellen. GitOps-Tools wie Argo CD oder Flux unterstützen automatisierte Deployments und Versionskontrolle für Cluster-Konfigurationen.
Häufige Kubernetes-Begriffe
Die folgenden grundlegenden Begriffe können Benutzern helfen, die Funktionsweise von Kubernetes und seiner Bereitstellung zu verstehen:
- Cluster sind die Grundlage der Kubernetes-Engine. Containerisierte Anwendungen werden auf Clustern ausgeführt. Es handelt sich um eine Reihe von Maschinen, auf denen Anwendungen verwaltet und ausgeführt werden.
- Nodes (Knoten) sind die Arbeitsmaschinen, aus denen Cluster bestehen.
- Pod sind Gruppen von Containern, die zusammen auf derselben Host-Maschine bereitgestellt werden.
- ReplicationController sind eine Abstraktion, die zur Verwaltung von Pod-Lebenszyklen verwendet wird. Der modernere Standard ist das ReplicaSet, das meist über Deployments verwaltet wird. Der klassische ReplicationController gilt als veraltet, wird aber noch aus Kompatibilitätsgründen unterstützt.
- Ein Selector ist ein Abgleichsystem, das zum Auffinden und Klassifizieren bestimmter Ressourcen verwendet wird.
- Label sind Wertepaare, die zum Filtern, Organisieren und Ausführen von Massenoperationen auf einer Reihe von Ressourcen verwendet werden.
- Eine Annotation ist ein Label mit einer viel größeren Datenkapazität.
- Ein Ingress ist ein Objekt der Programmierschnittstelle (API), das den externen Zugriff auf Dienste in einem Cluster steuert, in der Regel HTTP. Es bietet namensbasiertes virtuelles Hosting, Lastenausgleich und Secure Sockets Layer. Neuere Kubernetes-Versionen führen die Gateway API ein, die Ingress als Standard für Netzwerkrouting ergänzt oder ersetzt.
- Custom Resource Definitions (CRDs) ermöglichen es, eigene Kubernetes-Objekte zu definieren, die sich wie native Ressourcen verhalten und Kubernetes um individuelle Funktionen erweitern.
Wie funktioniert die Kubernetes-Infrastruktur?
Die Kubernetes-Infrastruktur umfasst mehrere Elemente, die Benutzern bei der Bereitstellung und Verwaltung containerisierter Anwendungen unterstützen. Dazu gehören physische oder virtuelle Server, Cloud-Plattformen und andere relevante Komponenten.
Im Folgenden finden Sie einen kurzen Überblick über das Containermanagement von Kubernetes, seine Komponenten und seine Funktionsweise.
Pods
Pods bestehen aus einem oder mehreren Containern, die sich auf einem Host-Rechner befinden und Ressourcen gemeinsam nutzen können. Kubernetes findet einen Rechner, der über genügend freie Rechenkapazität für einen bestimmten Pod verfügt, und startet die zugehörigen Container. Um Konflikte zu vermeiden, wird jedem Pod eine eindeutige IP-Adresse zugewiesen, über die Anwendungen Ports nutzen können. Pods werden in der Regel über Deployments, StatefulSets oder DaemonSets verwaltet, die den Lebenszyklus und die Skalierung steuern.
Node Agent
Ein Node Agent, der als Kubelet bezeichnet wird, verwaltet die Pods, ihre Container und ihre Images. Kubelets starten einen Container auch automatisch neu, wenn er ausfällt. Alternativ können Kubernetes-APIs zur manuellen Verwaltung von Pods verwendet werden.
Kubelet arbeitet mit Container-Runtimes zusammen, die dem Container Runtime Interface (CRI) entsprechen. containerd und CRI-O sind die gängigsten, Docker wird meist nicht mehr direkt verwendet.
ReplicationController
Ein Kubernetes ReplicationController verwaltet Pod-Cluster mithilfe einer Abgleichschleife, um den gewünschten Cluster-Zustand zu erreichen. Dadurch wird sichergestellt, dass die angeforderte Anzahl von Pods gemäß den Spezifikationen des Benutzers ausgeführt wird. Er kann verwendet werden, um neue Pods zu erstellen, wenn ein Knoten ausfällt, oder um vorhandene Pods zu verwalten, zu replizieren und zu skalieren.
Der ReplicationController skaliert Container horizontal und stellt sicher, dass eine ausreichende Anzahl von Containern verfügbar ist, wenn sich der Rechenbedarf der gesamten Anwendung ändert. In anderen Fällen kann ein Job-Controller Batch-Jobs verwalten, oder ein DaemonSet-Controller kann verwendet werden, um einen einzelnen Pod auf jedem Rechner in einem Set zu verwalten.
Weitere Kubernetes-Infrastrukturelemente und ihre Hauptfunktionen sind unter anderem die folgenden:
Security
Der Master-Knoten führt die Kubernetes-API aus und steuert das Cluster. Er ist Teil der Steuerungsebene und verwaltet die Kommunikation und Workloads über Cluster hinweg.
Ein Knoten, auch als Minion bezeichnet, ist ein Worker-Rechner in Kubernetes. Dabei kann es sich entweder um einen physischen Rechner oder einen virtuellen Rechner (VM) handeln. Knoten verfügen über die erforderlichen Dienste, um Pods auszuführen und Anweisungen von Master-Komponenten zu empfangen. Zu den Diensten auf den Knoten gehören containerd, Docker, kube-proxy und kubelet.
Die Sicherheit ist in vier Ebenen unterteilt: Cloud oder Rechenzentrum, Cluster, Container und Code. Es werden regelmäßig strengere Sicherheitsmaßnahmen entwickelt, getestet und implementiert.
Kubernetes verwendet standardmäßig rollenbasierte Zugriffskontrolle (RBAC), Pod Security Standards und Network Policies zur Durchsetzung von Zugriffs- und Sicherheitsrichtlinien. Secrets können at rest verschlüsselt und durch KMS-Integrationen geschützt werden.
Telemetrie
Eine Abstraktion namens Service ist ein automatisch konfigurierter Load Balancer und Integrator, der Cluster-übergreifend ausgeführt wird. Labels sind Schlüssel-Wert-Paare, die für Service Discovery verwendet werden. Ein Label kennzeichnet die Container und verknüpft sie zu Gruppen.
Zur Überwachung werden häufig Prometheus, Grafana und OpenTelemetry eingesetzt. Diese Tools ermöglichen Metriken, Logs und Tracing über den gesamten Stack hinweg.
Netzwerk
Bei Kubernetes geht es darum, Maschinen zwischen Anwendungen zu teilen. Da jeder Pod eine eigene IP-Adresse erhält, entsteht ein sauberes, abwärtskompatibles Modell. Pods können in Bezug auf Portzuweisung, Benennung, Service Discovery, Load Balancing, Anwendungskonfiguration und Migration wie VMs behandelt werden.
Das Netzwerkverhalten wird über CNI-Plug-ins (Container Network Interface) gesteuert, beispielsweise Calico, Cilium oder Flannel. CNI-Implementierungen unterstützen auch Network Policies und Observability.
Registry
Es besteht eine direkte Verbindung zwischen Amazon Elastic Container Registry (Amazon ECR) und Kubernetes. Jeder Benutzer im Cluster, der Pods erstellen kann, kann beliebige Pods ausführen, die beliebige Images in der ECR-Registry verwenden.
Neben ECR sind auch Docker Hub, GitHub Container Registry (GHCR) und Google Artifact Registry weit verbreitet. Private Registrys werden meist über ImagePullSecrets gesichert.
Vorteile von Kubernetes
Mit Kubernetes können Benutzer Container, in der Regel in Cluster-Konfigurationen, planen, ausführen und überwachen sowie damit verbundene Betriebsaufgaben automatisieren.
Zu den allgemeinen Vorteilen von Kubernetes gehören die folgenden:
- Bereitstellung: Kubernetes legt bevorzugte Zustände für die Containerbereitstellung fest und ändert diese. Benutzer können neue Containerinstanzen erstellen, vorhandene dorthin migrieren und die alten entfernen. DevOps-Teams können Kubernetes verwenden, um Richtlinien für Continuous Deployment, Automatisierung, Skalierbarkeit und Anwendungsresilienz festzulegen und Codeänderungen schnell einzuführen. Seit Version 1.27 (April 2023) unterstützt Kubernetes zudem verbesserte Rollback-Mechanismen und optimierte Cluster-Upgrades. Metriken, die zur Steuerung der Kubernetes-Bereitstellung verwendet werden, können auch in eine AIOps- oder GitOps-Strategie einfließen.
- Monitoring: Kubernetes überprüft kontinuierlich den Zustand der Container, startet ausgefallene Container neu und entfernt nicht reagierende Container. Observability-Lösungen wie Prometheus, Grafana oder OpenTelemetry werden standardmäßig integriert, um Metriken, Logs und Traces zu erfassen.
- Load Balancing: Kubernetes wird verwendet, um einen Lastausgleich durchzuführen und den Datenverkehr auf mehrere Containerinstanzen zu verteilen. Ab neueren Versionen bietet es Unterstützung für externe Load-Balancer-Integrationen und Gateway-APIs.
- Storage: Kubernetes kann verschiedene Storage-Typen für Containerdaten verarbeiten, von lokalem Storage bis hin zu Cloud-Ressourcen. Mit der Container Storage Interface (CSI) ist die Verwaltung von Persistent Volumes standardisiert und flexibler geworden.
- Optimierung: Es kann Containerbereitstellungen um eine Ebene der Intelligenz erweitern, beispielsweise durch Ressourcenoptimierung, indem es ermittelt, welche Worker Nodes verfügbar sind und welche Ressourcen für Container benötigt werden, und die Container automatisch auf diese Knoten verteilt.
- Sicherheit: Kubernetes wird auch zur Verwaltung von Passwörtern, Tokens, SSH-Schlüsseln und anderen sensiblen Informationen verwendet. Hierfür werden Secret-Management-Lösungen wie HashiCorp Vault oder Sealed Secrets immer häufiger eingesetzt und seit Kubernetes 1.25 ist die Unterstützung für Verschlüsselung im Ruhezustand (Encryption at Rest) verbessert worden.
- Verfügbarkeit: Es kann eine hohe Verfügbarkeit von Containern gewährleisten, indem es ausgefallene Container automatisch neu startet oder sie auf funktionierende Knoten umplant.
- Open Source: Kubernetes ist ein Open-Source-Projekt, das sich ständig weiterentwickelt und von den Beiträgen einer Vielzahl von Entwicklern und Organisationen profitiert. Da es sehr erweiterbar ist, können Benutzer seine Funktionalität anpassen und erweitern, um spezifische Anforderungen zu erfüllen. Über 120.000 Contributor aus der CNCF-Community arbeiten kontinuierlich an der Weiterentwicklung.
Herausforderungen bei der Verwendung von Kubernetes
Kubernetes erfordert oft Änderungen der Rollen und Verantwortlichkeiten innerhalb einer bestehenden IT-Abteilung, da Unternehmen entscheiden müssen, welches Modell sie einsetzen möchten – eine Public Cloud oder lokale Server. Die Herausforderungen bei der Verwendung von Kubernetes variieren je nach Größe der Organisation, Anzahl der Mitarbeiter, Skalierbarkeit und Infrastruktur.
Zu den häufigsten Herausforderungen bei Kubernetes gehören die folgenden:
- Schwierige Eigenimplementierung: Einige Unternehmen wünschen sich die Flexibilität, Open-Source-Kubernetes selbst zu betreiben, wenn sie über die erforderlichen Fachkräfte und Ressourcen verfügen. Viele andere entscheiden sich für ein Servicepaket aus dem breiteren Kubernetes-Ökosystem, um die Bereitstellung und Verwaltung für IT-Teams zu vereinfachen. Managed Kubernetes-Dienste wie EKS, AKS oder GKE haben sich dabei als Standard etabliert.
- Lastskalierung: Teile einer Anwendung in Containern können unter Last unterschiedlich oder gar nicht skaliert werden, was eine Funktion der Anwendung und nicht der Methode der Containerbereitstellung ist. Unternehmen müssen berücksichtigen, wie Pods und Knoten ausgeglichen werden können. Funktionen wie Horizontal Pod Autoscaler (HPA) und Vertical Pod Autoscaler (VPA) erleichtern diese Aufgabe.
- Verteilte Komplexität: Die Verteilung von Anwendungskomponenten in Containern bietet die Flexibilität, Funktionen nach oben und unten zu skalieren, aber zu viele verteilte Anwendungskomponenten erhöhen die Komplexität und können die Netzwerklatenz beeinträchtigen und die Verfügbarkeit verringern. Ein Service-Mesh wie Istio oder Linkerd unterstützt dabei, diese Komplexität zu verwalten.
- Überwachung und Observability: Wenn Unternehmen die Containerbereitstellung und Orchestrierung für mehr produktive Workloads ausweiten, wird es schwieriger, zu wissen, was hinter den Kulissen vor sich geht. Dadurch entsteht ein erhöhter Bedarf, verschiedene Ebenen des Kubernetes-Stacks und die gesamte Plattform hinsichtlich Leistung und Sicherheit besser zu überwachen. Deshalb setzen viele Organisationen auf zentrale Monitoring-Stacks und Policy-as-Code-Ansätze wie Open Policy Agent (OPA).
- Nuancenreiche Sicherheit: Die Bereitstellung von Containern in Produktionsumgebungen fügt viele Ebenen der Sicherheit und Compliance hinzu: Schwachstellenanalyse des Codes, Multifaktor-Authentifizierung und gleichzeitige Bearbeitung mehrerer zustandsloser Konfigurationsanfragen. Eine ordnungsgemäße Konfiguration und Zugriffskontrollen sind von entscheidender Bedeutung, insbesondere da die Akzeptanz zunimmt und immer mehr Unternehmen Container in der Produktion einsetzen. Im Jahr 2020 startete Kubernetes ein Bug-Bounty-Programm, um diejenigen zu belohnen, die Sicherheitslücken in der Kernplattform von Kubernetes finden. Inzwischen sind zusätzliche Sicherheits-Features wie Pod Security Admission und RuntimeClass eingeführt worden, um Workloads stärker zu isolieren.
- Vendor Lock-in: Obwohl Kubernetes eine Open-Source-Plattform ist, können Herausforderungen in Bezug auf die Anbieterabhängigkeit auftreten, wenn man sich für verwaltete Kubernetes-Dienste von Cloud-Anbietern entscheidet. Der Prozess der Migration von einem Kubernetes-Dienst zu einem anderen oder die Überwachung von Multi-Cloud-Bereitstellungen kann zu Komplexitäten führen. Tools wie Crossplane oder ArgoCD erleichtern portables Multi-Cloud-Management.
Wer sind die Konkurrenten von Kubernetes?
Kubernetes wurde als Umgebung für die Erstellung verteilter Anwendungen in Containern entwickelt. Es kann als Upstream-Open-Source-Version oder als proprietäre, unterstützte Distribution eingesetzt werden.
Kubernetes ist zwar eines der führenden Orchestrierungs-Tools, aber sicherlich nicht das einzige. Die Orchestrierungslandschaft ist dynamisch und Unternehmen, die Container planen und orchestrieren möchten, stehen verschiedene Alternativen und Optionen zur Verfügung.
Zu den beliebten Konkurrenten von Kubernetes gehören die folgenden:
- Docker Swarm: Docker Swarm, eine eigenständige Containerorchestrierungs-Engine für Docker-Container, bietet native Clustering-Funktionen mit geringeren Einstiegshürden und weniger Befehlen als Kubernetes. Swarm-Benutzer werden dazu ermutigt, die Docker-Infrastruktur zu verwenden, werden jedoch nicht daran gehindert, andere Infrastrukturen zu nutzen. In den letzten Jahren haben die beiden Containerisierungstechnologien begonnen, am effizientesten zu arbeiten, wenn sie zusammen verwendet werden. Mit Docker können Unternehmen Container auf einem einzigen Betriebssystem ausführen, erstellen und verwalten. Mit Kubernetes können Container dann für die Bereitstellung, Vernetzung, Lastverteilung, Sicherheit und Skalierung über Knoten hinweg von einem einzigen Dashboard aus automatisiert werden. Mirantis hat das Docker Enterprise-Geschäft Ende 2019 übernommen und wollte sich zunächst auf Kubernetes konzentrieren, hat sich aber später verpflichtet, die Unternehmensversion von Docker Swarm zu unterstützen und auszubauen. Seit 2023 wird Docker Swarm weiterhin gepflegt, spielt aber in Unternehmensumgebungen eine untergeordnete Rolle.
- Jenkin: Jenkins, ebenfalls ein Open Source Tool, ist ein Continuous-Integration-Server-Tool, das eine einfache Installation, einfache Konfiguration und Unterstützung für Änderungssätze sowie interne Hosting-Funktionen bietet. Im Vergleich zu Jenkins ist Kubernetes als Container-Tool leichter, einfacher und zugänglicher. Es wurde für eine Multi-Cloud-Umgebung entwickelt, unabhängig davon, ob diese öffentlich oder privat ist. In CI/CD-Pipelines werden Jenkins und Kubernetes häufig kombiniert, etwa über Jenkins-X.
- Nomad: Nomad, entwickelt von HashiCorp, ist ein Open-Source-Cluster-Manager und Scheduler. Mit Schwerpunkt auf Einfachheit und Flexibilität ermöglicht es Benutzern, Anwendungen über einen Maschinen-Cluster hinweg bereitzustellen und zu überwachen, ohne dass komplexe Konfigurationen erforderlich sind. Nomad gewinnt zunehmend an Bedeutung in Umgebungen, in denen geringere Komplexität bevorzugt wird.
Kubernetes-Unterstützung und Produktökosystem für Unternehmen
Als Open-Source-Projekt unterstützt Kubernetes mehrere proprietäre Distributionen und Managed Services von Cloud-Anbietern, darunter die folgenden:
- Amazon Elastic Container Service: Amazon Web Services (AWS) bietet einen vollständig verwalteten Containerorchestrierungsdienst namens Amazon Elastic Container Service an. Er vereinfacht Cluster-Management, automatische Updates und Patches und beseitigt die Komplexität bei der Bereitstellung von Containern.
- Canonical Kubernetes: Canonical Kubernetes ist ein Cloud-gehostetes Kubernetes, das auf dem Betriebssystem Ubuntu basiert.
- Google Kubernetes Engine: GKE vereinfacht die Verwaltung und Bereitstellung von Kubernetes-Clustern, sodass sich Kunden auf ihre Anwendungen statt auf die zugrunde liegende Infrastruktur konzentrieren können. GKE bietet auch Autopilot-Modi für automatisiertes Management von Nodes und Ressourcen.
- IBM Red Hat OpenShift: OpenShift ist eine Containeranwendungsplattform für Unternehmen, die auf Kubernetes und Docker basiert. Sie zielt auf schnelle Anwendungsentwicklung, einfachere Bereitstellung und Automatisierung ab und unterstützt gleichzeitig Containerspeicherung und Multi-Tenancy.
- Rancher: Rancher von Rancher Labs ist eine Open-Source-Containermanagementplattform, die speziell auf Unternehmen ausgerichtet ist, die Container in der Produktion einsetzen.
- Mirantis: Mirantis ist ein weiteres Beispiel für ein Open-Source-Ökosystem auf Basis von Kubernetes, das für das IoT genutzt werden kann. Das Produkt wurde für die Verwaltung von IQRF-Netzwerken und Gateways für IoT-Anwendungen wie Smart Cities entwickelt. Seit 2024 unterstützt Mirantis auch Multi-Cloud- und Edge-Deployments.
Wie sieht die Geschichte von Kubernetes aus?
In der Vergangenheit führten Unternehmen Anwendungen auf physischen Servern aus, ohne die Möglichkeit, Ressourcengrenzen zu definieren, was zu Problemen bei der Ressourcenzuweisung führte. Um dieses Problem zu lösen, wurde Virtualisierung eingeführt. Dadurch können mehrere VMs gleichzeitig auf der CPU eines einzelnen Servers betrieben werden. Anwendungen können zwischen VMs isoliert werden und erhalten so eine erhöhte Sicherheit, da sie für andere nicht ohne Weiteres zugänglich sind.
Container ähneln VMs, haben jedoch weniger strenge Isolationseigenschaften. Genau wie eine VM verfügt ein Container über ein Dateisystem, eine CPU und Speicher. Container können schnell erstellt, bereitgestellt und in verschiedene Umgebungen integriert werden.
Kubernetes, das von Google entwickelt und 2015 veröffentlicht wurde, wurde von der internen Data-Center-Managementsoftware des Unternehmens namens Borg inspiriert. Seitdem hat Kubernetes wichtige Entwickler aus verschiedenen Bereichen der Containerindustrie angezogen. Die Cloud Native Computing Foundation (CNCF) hat 2018 das Hosting von Kubernetes übernommen.
Kubernetes ist Open Source, sodass jeder über eine oder mehrere Kubernetes-Interessengruppen zum Kubernetes-Projekt beitragen kann. Zu den führenden Unternehmen, die Code für das Projekt bereitstellen, gehören IBM, Rackspace und Red Hat. IT-Anbieter haben Support und Integrationen für die Verwaltungsplattform entwickelt, während Community-Mitglieder versuchen, Lücken zwischen der Integration der Anbieter und Open Source Tools zu schließen.
Zu den Anwendern von Kubernetes zählen Cloud-Dokumentenmanagementdienste, der Telekommunikationsriese Comcast, der Finanzdienstleistungskonzern Fidelity Investments und Unternehmen wie SAP Concur und Tesla. Seit 2024 gehören auch zahlreiche KI- und Machine-Learning-Plattformen zu den aktiven Kubernetes-Anwendern.
Wie sieht die Zukunft von Kubernetes aus?
Seit den Anfängen von Kubernetes hat sich das Interesse der Branche von Updates der Kernplattform von Kubernetes hin zu übergeordneten Bereichen verlagert, in denen Unternehmen von Containerorchestrierung und Cloud-nativen Anwendungen profitieren können. Dazu gehören sensible Workloads, die Multi-Tenant-Sicherheit erfordern, eine flüssigere Verwaltung von zustandsbehafteten Anwendungen wie Datenbanken und die Förderung von GitOps-versionskontrollierten automatisierten Releases von Anwendungen und softwaredefinierter Infrastruktur.
Da Unternehmen die Containerbereitstellung und -orchestrierung für mehr Workloads in der Produktion ausweiten, wird es immer schwieriger, zu wissen, was hinter den Kulissen vor sich geht. Dadurch steigt der Bedarf, verschiedene Schichten des Kubernetes-Stacks und die gesamte Kubernetes-Plattform hinsichtlich Leistung und Sicherheit besser zu überwachen. Drittanbieter-Tools, CNCF-Projekte und GitOps-Frameworks wie ArgoCD oder Flux helfen mittlerweile, die Komplexität zu bewältigen. Gleichzeitig besteht das Kubernetes-Ökosystem weiterhin aus Dutzenden von Kubernetes-Distributionen und Anbietern, was sich in Zukunft wahrscheinlich verringern wird.
Obwohl es schwierig ist, die genaue Entwicklung von Kubernetes vorherzusagen, ist mit einem Wachstum der folgenden Trends zu rechnen:
- Serverless Kubernetes: Es wird erwartet, dass Kubernetes weiterhin in serverlose Frameworks wie Knative integriert wird, sodass Kunden serverlose Workloads auf Kubernetes-Clustern ausführen können.
- Maschinelles Lernen (ML): Obwohl Kubernetes bereits zur Verwaltung von ML-Workloads eingesetzt wird, gibt es noch Verbesserungspotenzial, beispielsweise durch die Integration mit bekannten Frameworks für maschinelles Lernen oder die Hinzufügung weiterer spezialisierter Funktionen. Frameworks wie TensorFlow, PyTorch und Kubeflow profitieren direkt von der Kubernetes-Orchestrierung.
- Edge Computing: Die Workload-Verwaltung am Edge – wo Geräte mit der Cloud verbunden sind – ist eine weitere Anwendung für Kubernetes. Kubernetes kann eine wichtige Rolle bei der Workload-Verwaltung in diesen verteilten Systemen spielen, da Edge Computing immer mehr an Bedeutung gewinnt. Leichtgewichtige Distributionen wie K3s oder MicroK8s werden hierfür bevorzugt.
- Multi-Cloud- und Hybrid-Cloud-Bereitstellungen: Die Bedeutung von Kubernetes für die effiziente Verwaltung von Workloads in verschiedenen Cloud-Umgebungen wird zunehmen, da immer mehr Unternehmen Multi-Cloud- und Hybrid-Cloud-Strategien verfolgen. Tools wie Crossplane, Rancher oder Anthos vereinfachen Multi-Cluster- und Multi-Cloud-Management.