1. Themen
  2. Container
  3. Was ist ein Kubernetes Operator?

Was ist ein Kubernetes Operator?

CopiedFailedURL kopieren
  • Ein Kubernetes Operator ist eine Methode zur Paketierung, Bereitstellung und Verwaltung einer Kubernetes-Anwendung. 
  • Kubernetes-Anwendungen werden sowohl auf Kubernetes bereitgestellt als auch mit der Kubernetes-API und den kubectl-Tools gemanagt.
  • Kubernetes Operators verwalten Anwendungen mithilfe einer kontinuierlichen Abgleichsschleife, die operative Aufgaben automatisiert.
  • Das Operator-Framework ist ein Open Source-Projekt, das Kubernetes-Tools für Entwicklung und Runtime bereitstellt.
  • Das Kubernetes Operator-Pattern wurde dadurch motiviert, dass Kubernetes nicht über die interne Logik verfügt, die zur sicheren Handhabung komplexer, zustandsbehafteter Systeme wie Datenbanken und Nachrichtenwarteschlangen erforderlich ist.
  • Red Hat OpenShift Operators können einen benutzerdefinierten Workflow im Zusammenhang mit nativen OpenShift-Ressourcen automatisieren, indem sie beliebige Ressourcen und die zugehörige benutzerdefinierte Logik definieren und implementieren.

Was ist ein Kubernetes Operator?

Ein Kubernetes OperatorSeite verfügbar in Englisch (Deutsch ist nicht verfügbar) ist eine Methode zur Paketierung, Bereitstellung und Verwaltung einer Kubernetes-Anwendung. Kubernetes-Anwendungen werden sowohl auf Kubernetes bereitgestellt als auch mit der Kubernetes-API und den kubectl-Tools gemanagt.

Ein Kubernetes Operator ist ein anwendungsspezifischer Controller, der die Funktionalität der Kubernetes-API erweitert, um Instanzen komplexer Anwendungen für Kubernetes-Nutzende zu erstellen, zu konfigurieren und zu verwalten.

Hierzu werden allgemeine Kubernetes-Konzepte für Ressourcen und Controller herangezogen. Allerdings sind auch domain- oder anwendungsspezifische Kenntnisse zur Automatisierung des gesamten Lifecycles der verwalteten Software erforderlich. 

In Kubernetes implementieren Controller der Control Plane Regelkreise, die den gewünschten Zustand des Clusters wiederholt mit dem aktuellen Zustand vergleichen. Wenn der aktuelle Zustand des Clusters nicht dem gewünschten Zustand entspricht, ergreift der Controller Maßnahmen, um das Problem zu beheben. 

Ein Operator ist ein benutzerdefinierter Kubernetes-Controller, der benutzerdefinierte Ressourcen (CR) verwendet, um Anwendungen und ihre Komponenten zu verwalten. Innerhalb einer CR werden allgemeine Konfigurationen und Einstellungen von Nutzenden bereitgestellt. Der Kubernetes Operator setzt die allgemeinen Vorgaben auf Grundlage der in seiner Logik eingebetteten Best Practices in die konkreten technischen Maßnahmen um.

Eine benutzerdefinierte Ressource ist der API-Erweiterungsmechanismus in Kubernetes. Eine benutzerdefinierte Ressourcendefinition (CRD) definiert eine CR und listet alle Konfigurationen auf, die für Nutzende des Operators verfügbar sind. 

Der Kubernetes Operator überwacht einen CR-Typ und ergreift anwendungsspezifische Maßnahmen, um sicherzustellen, dass der aktuelle Zustand dem gewünschten Zustand in dieser Ressource entspricht.

Kubernetes Operators führen neue Objekttypen über benutzerdefinierte Ressourcendefinitionen ein. Benutzerdefinierte Ressourcendefinitionen können von der Kubernetes-API wie integrierte Objekte gehandhabt werden, einschließlich Interaktion über kubectl und Einbeziehung in RBAC-Richtlinien (Role-based Access Control).

Ein Kubernetes Operator überwacht seine Anwendung während der Ausführung kontinuierlich und kann Daten sichern, nach Fehlern wiederherstellen und die Anwendung im Laufe der Zeit automatisch upgraden. 

Die Maßnahmen, die ein Kubernetes Operator durchführt, können fast alles umfassen: das Skalieren einer komplexen App, Upgrades der Anwendungsversion und sogar das Verwalten von Kernel-Modulen für Nodes in einem Computing Cluster mit spezialisierter Hardware.

E-Book zu Kubernetes Operators herunterladenSeite verfügbar in Englisch (Deutsch ist nicht verfügbar)

Kubernetes Operators verwalten Anwendungen mithilfe einer kontinuierlichen Abgleichsschleife, die die operativen Aufgaben automatisiert, die normalerweise von einem menschlichen Engineer ausgeführt werden. Sie bilden eine anwendungsspezifische Brücke zwischen standardmäßigen Kubernetes-Ressourcen und den komplexen, internen operativen Anforderungen von Software.

Kubernetes kann zustandslose Anwendungen wie Webanwendungen, mobile Backends und API-Services verwalten und skalieren, ohne dass zusätzliche Kenntnisse über die Funktionsweise dieser Anwendungen erforderlich sind. Die integrierten Funktionen von Kubernetes sind darauf ausgelegt, diese Aufgaben einfach zu bewältigen.

Zustandsbehaftete Anwendungen wie Datenbanken und Überwachungssysteme erfordern jedoch zusätzliche domainspezifische Kenntnisse, über die Kubernetes nicht verfügt. Dieses Wissen ist erforderlich, um Anwendungen skalieren, upgraden und neu konfigurieren zu können.

Kubernetes Operators codieren dieses spezifische Domain-Wissen in Kubernetes-Erweiterungen, damit sie den Lifecycle einer Anwendung verwalten und automatisieren können.

Kubernetes Operators beseitigen schwierige manuelle Aufgaben der Anwendungsverwaltung und machen diese Prozesse skalierbar, wiederholbar und standardisiert.

Operators erleichtern Anwendungsentwicklungsteams das Bereitstellen und Ausführen der Basisservices, von denen ihre Anwendungen abhängen. 

Für Infrastruktur-Engineers und -Anbieter bieten Operators eine konsistente Möglichkeit, Software auf Kubernetes-Clustern zu verteilen und den Supportaufwand zu reduzieren, indem sie Anwendungsprobleme erkennen und beheben. 

Operators ermöglichen Ihnen das Schreiben von Code zur Automatisierung von Aufgaben über die grundlegenden Automatisierungsfunktionen von Kubernetes hinaus. Für Teams, die einen DevOps- oder SRE-Ansatz (Site Reliability Engineering) verfolgen, wurden Operators entwickelt, um SRE-Praktiken in Kubernetes zu implementieren. 

Die Funktion des Operator-Patterns besteht darin, die Absichten zu erfassen, wie ein menschlicher Operator einen Service verwalten würde. Ein menschlicher Operator muss wissen, wie Apps oder Services funktionieren sollten, wie sie bereitgestellt werden und wie etwaige Probleme behoben werden können.

Der Site Reliability Engineer oder das Operations-Team schreibt in der Regel die Software zum Verwalten einer Anwendung. Operators hingegen können das menschliche operative Wissen in Software codieren, um Kubernetes-Workloads zu verwalten und bereitzustellen und gleichzeitig manuelle Aufgaben zu eliminieren. 

Operators werden am besten von Fachleuten erstellt, die sich mit der Geschäftslogik auskennen, die mit dem Installieren, Ausführen und Upgraden einer bestimmten Anwendung einhergeht.

Das Erstellen eines Operators beginnt häufig mit der Automatisierung der Installation und Self Service-Provisionierung der Anwendung. Danach folgen komplexere Automatisierungsfunktionen.

Außerdem gibt es für den Kubernetes Operator ein Software Development Kit (SDK), mit dem Sie Ihren eigenen Operator entwickeln können. Das SDK bietet die Tools zum Entwickeln, Testen und Paketieren von Operators, wobei für die Erstellung von Operators Helm Charts, Ansible Playbooks oder Golang verwendet werden können.

Das Operator-Framework ist ein Open Source-Projekt, das Kubernetes-Tools für Entwicklung und Runtime bereitstellt, mit denen Sie die Entwicklung eines Operators beschleunigen können.

Das Operator-Framework umfasst:

  • Operator-SDK: Ermöglicht Entwicklungsteams das Erstellen von Operators basierend auf ihrem Fachwissen, ohne dass sie über die Komplexität der Kubernetes-API Bescheid wissen müssen.
  • Operator Lifecycle Management: Überwacht Installation, Updates und Management des Lifecycles sämtlicher Operators, die in einem Kubernetes-Cluster ausgeführt werden.
  • Operator Metering: Ermöglicht Nutzungsberichte für Operators, die spezielle Services bereitstellen.

Welche Gründe sprechen für die Verwendung des Operator-Patterns?

Das Kubernetes Operator-Pattern wurde durch eine kritische Einschränkung in Standard-Kubernetes motiviert: Es verfügt nicht über die interne Logik, die zur sicheren Handhabung komplexer, zustandsbehafteter Systeme wie Datenbanken und Nachrichtenwarteschlangen erforderlich ist. Traditionell erforderte das Management dieser Systeme menschliche Site Reliability Engineers (SREs), die Playbooks für Backups, Versions-Upgrades und Multi Node Failovers manuell ausführen mussten.

Operators lösen diese Herausforderung, indem sie menschliches operatives Wissen direkt in Software codieren. Durch die Verknüpfung von benutzerdefinierten Ressourcen mit automatisierten Abgleichsschleifen transformieren Operators manuelle operative Checklisten in kontinuierliche Automatisierungsprozesse mit Selbstreparaturfunktion. Für die Engineering-Teams bedeutet dies enorme Vorteile: Manueller Konfigurationsdrift wird vermieden, und risikofreie Rolling Upgrades werden ermöglicht. Außerdem können Unternehmen komplexe, hochverfügbare Software auf beliebigen Cloud-Plattformen mit genau denselben standardisierten, deklarativen YAML-Manifesten bereitstellen.

Red Hat® OpenShift® Operators sind ein Erweiterungsmechanismus von Red Hat OpenShift. Sie können einen benutzerdefinierten Workflow im Zusammenhang mit nativen OpenShift-Ressourcen automatisieren, indem sie beliebige Ressourcen und die zugehörige benutzerdefinierte Logik definieren und implementieren. In diesem Blog-Beitrag werden sie von Red Hat ausführlich erläutert. 

Red Hat® OpenShift® ist eine unternehmensgerechte Kubernetes-Container-Plattform mit automatisierten Abläufen für den gesamten Stack zum Verwalten von Hybrid Cloud- und Multi Cloud-Deployments.

Red Hat OpenShift verwendet Kubernetes Operators, um die gesamte Plattform autonom auszuführen und gleichzeitig die Konfiguration nativ über Kubernetes-Objekte bereitzustellen. Dies ermöglicht eine schnelle Installation und häufige, robuste Updates. 

Red Hat OpenShift umfasst den Embedded OperatorHub, eine Registry mit zertifizierten Operators von Softwareanbietern und Open Source-Projekten. Im OperatorHub können Sie eine Library mit Operators durchsuchen und Operators installieren, die für die Verwendung mit Red Hat OpenShift verifiziert und für ein einfaches Lifecycle Management paketiert wurden.

Red Hat OpenShift kostenlos testen

Ressource

Beschleunigte App-Entwicklung mit Red Hat OpenShift

Erfahren Sie, wie Ihr Unternehmen mit Red Hat OpenShift traditionelle und KI-gestützte Workloads sicher und konform entwickeln, beschleunigen und skalieren kann.

Weiterlesen

Was ist Container-Orchestrierung?

Mithilfe der Container-Orchestrierung werden Deployment, Management, Skalierung und Vernetzung von Containern automatisiert.

Was ist Kubernetes?

Kubernetes ist eine Container-Orchestrierungsplattform, mit der viele manuelle Prozesse im Zusammenhang mit dem Deployment und der Skalierung containerisierter Anwendungen eliminiert werden können.

Container im Vergleich zu VMs: Warum nicht beides?

Container und virtuelle Maschinen (VMs) sind unterschiedliche Ansätze für das Paketieren und Isolieren von Computing-Komponenten. Im Folgenden erfahren Sie, wie diese beiden Ansätze zusammenarbeiten können.

Ressourcen zu Container

Verwandte Artikel