Was sind Kubernetes-Controller und -Operatoren?

0
163
dennizn/Shutterstock.com

Die Kubernetes-Begriffe “Controller” und “Betreiber” beziehen sich auf zwei verschiedene Muster, die einen Cluster in einen gewünschten Zustand überführen. Controller sind ein etabliertes Konzept, während Operatoren in jüngerer Zeit aufgekommen sind, um anwendungsspezifische Controller zu beschreiben.

Der Regelkreis

Kubernetes-Cluster funktionieren in einem Regelkreis. Sie definieren, was der Cluster tun soll, indem Sie YAML-Manifeste schreiben und anwenden. Controller innerhalb des Clusters erkennen die angeforderten Änderungen und ergreifen Maßnahmen, um den Status anzupassen. Dies geschieht asynchron, nachdem Sie Ihre neuen Manifeste eingereicht haben.

Controller sind dafür verantwortlich, die Ressourcen des Clusters zu überwachen, zu beurteilen, ob sie vom definierten Zustand abgewichen sind, und alle erforderlichen Anpassungen vorzunehmen, um sie wieder in Einklang zu bringen. Sie sind vollautomatisierte Komponenten, die ohne Eingriff laufen.

Es gibt verschiedene Arten von Controllern innerhalb des Ökosystems. Einige agieren auf Cluster-Ebene, während andere Ihre Workloads verwalten. Alltägliche Kubernetes-Ressourcen, die Sie in Ihren Manifesten definieren, können Controller sein: Deployment, ReplicaSet und ähnliche Beispiele erfüllen die Definition eines Controllers. Sie übernehmen die Verantwortung für verschachtelte Objekte, um eine benutzerdefinierte Anzahl von Replikaten aufrechtzuerhalten.

Was macht einen Controller aus?

Ein Controller ist alles in Ihrem Cluster, das mindestens einen anderen Kubernetes-Ressourcentyp verfolgt. Controller können passiv oder aktiv sein. Ein aktiver Controller führt die notwendigen Aktionen selbst aus; Passive werden Änderungen an andere Komponenten oder den Cluster-API-Server übermitteln.

Werbung

Da die Rolle eines Controllers absichtlich abstrakt ist, haben sie über die Überwachung bestimmter Objekte hinaus keine gemeinsame Funktionalität. Sie könnten einen Controller haben, der Pods mit einer Annotation zum automatischen Löschen automatisch löscht.

In Kubernetes sind Controller nur ein Muster für die Implementierung automatisierter Regelkreisfunktionen. Einzelne Controller haben einzigartige Zwecke und Eigenschaften, aber sie überwachen immer die Objekte oder Konfiguration Ihres Clusters.

Was ist mit Operatoren?

Ein Operator ist eine spezielle Form des Controllers. Operatoren implementieren das Controller-Muster, was bedeutet, dass sie den Cluster in einen definierten Zustand bringen, aber sie besitzen auch einige zusätzliche Eigenschaften. Der Begriff wurde ursprünglich von CoreOS geprägt, wurde aber jetzt auch von Kubernetes breiter übernommen.

Operatoren sind auf bestimmte Anwendungen zugeschnitten. Sie fügen Kubernetes-API-Erweiterungen über benutzerdefinierte Ressourcendefinitionen hinzu und erstellen neue Objekttypen, die von der von ihnen verwalteten Anwendung verwendet werden.

Mehrere beliebte Community-Anwendungen verfügen jetzt über eigene Operatoren. Diese erleichtern die Installation, Konfiguration und Wartung der verwalteten Software in Ihrem Cluster. Es gibt Operatoren für etcd, Fluentd, Prometheus und viele andere kritische Projekte, die üblicherweise in Clustern gestartet werden.

Diese Workloads können komplex sein und aus mehreren einzelnen Komponenten bestehen. Sie enthalten wahrscheinlich anwendungsspezifische Logik, die während des gesamten Lebenszyklus der Installation verwaltet werden muss.

Werbung

Das Betreiberkonzept bietet eine Möglichkeit, diese Anwendungen nach den gleichen Prinzipien wie normale Controller zu überwachen. Ein Operator ist einfach ein spezialisierter Controller, der benutzerdefinierte Ressourcen verwendet, um eine bestimmte Anwendung in den richtigen benutzerdefinierten Zustand zu versetzen.

In der Regel konfigurieren Sie Operatoren, indem Sie Konfigurationsdaten in einer benutzerdefinierten Ressource bereitstellen. Der Operator nutzt sein Wissen über die Anwendung, um diese Daten in spezifische Aktionen im Cluster umzuwandeln. Diese Aktionen stellen eine funktionierende Installation der App zusammen, die dem in der Konfigurationsressource definierten Zustand entspricht.

Wofür werden Operatoren verwendet?

Da Operatoren domänenspezifisch sind, umfasst jeder unterschiedliche Funktionen. Im Allgemeinen können Sie von einem Operator erwarten, dass er einige der folgenden Funktionen anbietet:

  • Automatische Überwachung und Benachrichtigung – Betreiber wissen normalerweise, wenn ihre Anwendungen nicht richtig funktionieren, und generieren entsprechende Warnungen.
  • Automatische Versions-Upgrades im Laufe der Zeit– Betreiber sind oft in der Lage, Clusteränderungen automatisch anzuwenden, um neue App-Updates zu installieren, sobald diese verfügbar sind. Dadurch wird der Wartungsaufwand für Operationsteams erheblich reduziert.
  • Benutzerdefinierte Ressourcen installieren – Operatoren fügen die benutzerdefinierten Ressourcen der App zum Kubernetes-API-Server hinzu und bereiten den Cluster darauf vor, die Arbeitslast zu hosten.
  • Automatische Skalierung bereitstellen– Ein Operator mit domänenspezifischen Kenntnissen kann erkennen, wenn die konfigurierte Replikatanzahl zu niedrig ist, um den aktuellen Datenverkehr bequem zu bedienen und neue Instanzen hochzufahren, um die Leistung aufrechtzuerhalten.
  • Lebenszyklusverwaltung &#8211 ; Operatoren stellen sicher, dass neue Anwendungsinstanzen in einer Umgebung gestartet werden, in der alle Voraussetzungen bereits erfüllt sind. Sie führen auch alle erforderlichen Bereinigungen durch, nachdem ein Replikat beendet wurde.
  • Speicherverwaltung und Backups– Einige Operatoren unterstützen die Einrichtung von persistentem Speicher. Da sie ihre Anwendung verstehen, können sie auch Backups erstellen, bevor sie eine potenziell destruktive Aktion durchführen.

Die gesamte Funktionalität vor dem Bereitstellen einer neuen Arbeitslast von Grund auf neu zu installieren, wäre kompliziert und schwierig zu warten. Mit Operatoren können Sie komplexe Systeme in Ihren Cluster einführen, indem Sie eine vom Anbieter genehmigte Strategie verwenden, die sich selbst verwaltet und Kubernetes-nativ ist.

Die Vorteile der Betreiber sind in einigen der Anwendungen, die sie anbieten, deutlich zu beobachten. Die Versionskontrollsoftware GitLab ist ein komplexer Stapel von Komponenten, aber sein Betreiber bietet vollautomatische automatische Skalierung, fortlaufende Upgrades und Backups sowie einen metrischen Visualisierungsstapel mit Prometheus und Grafana. Es ist alles einsatzbereit, wenn Sie den Operator zu Ihrem Cluster hinzufügen.

Ein weiterer Operator ist MongoDB: Es bietet eine vollständig verwaltete Möglichkeit, Speicher, Datenbanken, Benutzer und Mongo-Einstellungen aus einem einzigen von Ihnen definierten Satz von Spezifikationen bereitzustellen. Der Operator konfiguriert dann Ihren Cluster entsprechend, um Ihre Datenbank-Workload zu unterstützen.

Werbung

Sie können Ihre eigenen Operatoren schreiben, indem Sie einen Controller mit einer der Kubernetes-Clientbibliotheken erstellen. Operatoren werden mithilfe der Kubernetes-REST-API entwickelt, um den Cluster und seine Objekte abzufragen und mit ihm zu interagieren.

Schlussfolgerung

Controller und Operatoren sind Kubernetes-Begriffe zur Beschreibung von Steuerungsebenenkomponenten, die Ressourcen überwachen und Aktionen anwenden, um den Status des Clusters zu ändern. Während Controller mit Operationen auf Kubernetes-Ebene befasst sind, verfügen Operatoren über eine domänenspezifische Logik und sind auf einzelne Anwendungen zugeschnitten.

Wenn Sie einen Operator zum Installieren einer Anwendung verwenden, bedeutet dies, dass Sie eine Komponente hinzufügen das überwacht diese Installation, überprüft, ob sie normal funktioniert, und automatisiert Statusübergänge für Updates oder Konfigurationsänderungen. Obwohl Helm-Charts die Herausforderung der Bereitstellung einer App und ihrer Abhängigkeiten bereits gelöst haben, gehen Betreiber noch einen Schritt weiter: Sie werden vom App-Anbieter bereitgestellt, kennen die Anforderungen der Workloads und die Verantwortung für die Installation während ihres gesamten Lebenszyklus behalten.

Die Sichtbarkeit der Betreiber wird wahrscheinlich weiter zunehmen, wenn komplexere zustandsbehaftete Anwendungen sie anbieten. Automatisierung der Wartung, “Tag zwei” Aufgaben und Upgrades tragen dazu bei, die Belastung für überlastete Betriebsteams zu verringern und erleichtern Neueinsteigern den Einstieg in produktionsbereite Bereitstellungen.