Cosa sono i controller e gli operatori Kubernetes?

0
122
dennizn/Shutterstock.com

I termini Kubernetes “controller” e “operatore” si riferiscono a due diversi modelli che fanno passare un cluster in uno stato desiderato. I controller sono un concetto consolidato, mentre gli operatori sono emersi più di recente per descrivere i controller specifici dell'applicazione.

Il circuito di controllo

I cluster Kubernetes funzionano su un ciclo di controllo. Definisci cosa dovrebbe fare il cluster scrivendo e applicando i manifest YAML. I controller all'interno del cluster rilevano le modifiche richieste e agiscono per regolare lo stato. Ciò si verifica in modo asincrono, dopo che hai inviato i tuoi nuovi manifest.

I controller sono responsabili del monitoraggio delle risorse del cluster, valutando se si sono discostate dallo stato definito e apportando le modifiche necessarie per riportarle in allineamento. Sono componenti completamente automatizzati che funzionano senza intervento.

Nell'ecosistema esistono diversi tipi di controller. Alcuni agiscono a livello di cluster mentre altri gestiscono i tuoi carichi di lavoro. Le risorse Kubernetes quotidiane che definisci nei tuoi manifest possono essere controller: Deployment, ReplicaSet ed esempi simili soddisfano la definizione di controller. Si occupano degli oggetti nidificati per mantenere un conteggio delle repliche definito dall'utente.

Cosa rende un controller?

Un controller è qualsiasi cosa all'interno del tuo cluster che tiene traccia di almeno un altro tipo di risorsa Kubernetes. I controller possono essere passivi o attivi. Un controller attivo effettuerà da solo le azioni necessarie; quelli passivi comunicheranno le modifiche ad altri componenti o al server API del cluster.

Annuncio

Poiché il ruolo di un controller è intenzionalmente astratto, non hanno funzionalità comuni oltre al monitoraggio di oggetti specifici. Potresti avere un controller che elimini automaticamente i pod con un'annotazione idonea per l'eliminazione automatica.

In Kubernetes, i controller sono solo uno schema per implementare la funzionalità del ciclo di controllo automatizzato. I singoli controller avranno scopi e caratteristiche unici, ma monitoreranno sempre gli oggetti o la configurazione del cluster.

E gli operatori?

Un operatore è una forma specializzata di controllore. Gli operatori implementano il pattern del controller, il che significa che spostano il cluster verso uno stato definito, ma possiedono anche alcune caratteristiche extra. Il termine è stato originariamente coniato da CoreOS, ma ora è stato adottato in modo più ampio anche da Kubernetes.

Gli operatori sono personalizzati per applicazioni specifiche. Aggiungono estensioni API Kubernetes tramite definizioni di risorse personalizzate, creando nuovi tipi di oggetti che vengono utilizzati dall'applicazione che gestiscono.

Diverse applicazioni popolari della community ora sono dotate di propri operatori. Questi semplificano l'installazione, la configurazione e la manutenzione del software gestito nel cluster. Esistono operatori per etcd, Fluentd, Prometheus e molti altri progetti critici che vengono comunemente lanciati in cluster.

Questi carichi di lavoro possono essere complessi e costituiti da diversi singoli componenti. È probabile che includano logica specifica dell'applicazione che deve essere gestita durante il ciclo di vita dell'installazione.

Pubblicità

Il concetto di operatore fornisce un modo per monitorare queste applicazioni utilizzando gli stessi principi dei normali controller. Un operatore è semplicemente un controller specializzato che utilizza risorse personalizzate per spostare un'applicazione specifica nello stato definito dall'utente corretto.

Di solito si configurano gli operatori fornendo dati di configurazione in una risorsa personalizzata. L'operatore utilizza la sua conoscenza dell'applicazione per convertire quei dati in azioni specifiche nel cluster. Tali azioni assembleranno un'installazione funzionante dell'app che corrisponde allo stato definito nella risorsa di configurazione.

A cosa servono gli operatori?

Poiché gli operatori sono specifici del dominio, ognuno include funzionalità diverse. In generale, puoi aspettarti che un operatore offra alcune delle seguenti funzionalità:

  • Monitoraggio e avvisi automatici – Gli operatori di solito sanno quando le loro applicazioni non funzionano correttamente e generano avvisi appropriati.
  • Aggiornamenti automatici della versione nel tempo– Gli operatori sono spesso in grado di applicare automaticamente le modifiche al cluster per installare nuovi aggiornamenti delle app non appena diventano disponibili. Ciò riduce significativamente il carico di manutenzione per i team operativi.
  • Installazione di risorse personalizzate – Gli operatori aggiungeranno le risorse personalizzate dell'app al server API Kubernetes, preparando il cluster per ospitare il carico di lavoro.
  • Fornire la scalabilità automatica– Un operatore con conoscenze specifiche del dominio può riconoscere quando il conteggio delle repliche configurate è troppo basso per servire comodamente il traffico corrente e avviare nuove istanze per mantenere le prestazioni.
  • Gestione del ciclo di vita &#8211 ; Gli operatori garantiscono l'avvio di nuove istanze dell'applicazione in un ambiente in cui tutti i prerequisiti sono già soddisfatti. Eseguiranno anche le operazioni di pulizia necessarie dopo l'interruzione di una replica.
  • Gestione dell'archiviazione e backup– Alcuni operatori assistono l'impostazione dell'archiviazione persistente. Poiché comprendono la loro applicazione, possono anche eseguire backup prima di eseguire un'azione potenzialmente distruttiva.

Assemblare tutte queste funzionalità da zero prima di distribuire un nuovo carico di lavoro sarebbe complicato e difficile da mantenere. Gli operatori ti consentono di avviare sistemi complessi nel tuo cluster utilizzando una strategia approvata dal fornitore, autogestita e nativa di Kubernetes.

I vantaggi degli operatori possono essere chiaramente osservati in alcune delle applicazioni che li offrono. Il software di controllo della versione GitLab è uno stack complesso di componenti, ma il suo operatore fornisce ridimensionamento automatico, aggiornamenti in sequenza e backup completamente automatizzati, nonché uno stack di visualizzazione delle metriche utilizzando Prometheus e Grafana. È tutto pronto per l'uso quando aggiungi l'operatore al tuo cluster.

Un altro operatore è quello di MongoDB: offre un modo completamente gestito per eseguire il provisioning di storage, database, utenti e impostazioni Mongo da un unico insieme di specifiche definite dall'utente. L'operatore quindi configura il cluster di conseguenza per supportare il carico di lavoro del database.

Annuncio

Puoi scrivere i tuoi operatori creando un controller utilizzando una delle librerie client Kubernetes. Gli operatori vengono sviluppati utilizzando l'API REST di Kubernetes per interrogare e interagire con il cluster e i suoi oggetti.

Conclusione

Controller e Operatori sono termini Kubernetes per descrivere i componenti del piano di controllo che monitorano le risorse e applicano azioni per modificare lo stato del cluster. Mentre i controller si occupano delle operazioni a livello di Kubernetes, gli operatori possiedono una logica specifica del dominio e sono personalizzati per le singole applicazioni.

Se utilizzi un operatore per installare un'applicazione, significa che stai aggiungendo un componente che controllerà l'installazione, controllerà che funzioni normalmente e automatizzerà le transizioni di stato per gli aggiornamenti o le modifiche alla configurazione. Sebbene i grafici Helm abbiano già risolto la sfida dell'implementazione di un'app e delle sue dipendenze, gli operatori fanno un ulteriore passo avanti: sono forniti dal fornitore dell'app, hanno una conoscenza approfondita dei requisiti del carico di lavoro e mantenere la responsabilità dell'installazione per l'intero ciclo di vita.

È probabile che gli operatori continueranno a crescere in visibilità man mano che applicazioni stateful più complesse inizieranno a offrirle. Manutenzione automatizzata, “giorno due” le attività e gli aggiornamenti aiutano a ridurre il carico sui team operativi estesi e facilitano l'avvio e l'esecuzione dei nuovi arrivati ​​con implementazioni pronte per la produzione.