Vad är Kubernetes-kontroller och -operatörer?

0
152
dennizn/Shutterstock.com figur>

Kubernetes termer “kontrollant” och “operatör” hänvisar till två olika mönster som övergår ett kluster till ett önskat tillstånd. Styrenheter är ett etablerat koncept medan operatörer har dykt upp på senare tid för att beskriva applikationsspecifika styrenheter.

Kontrollslingan

Kubernetes-kluster fungerar på en kontrollslinga. Du definierar vad klustret ska göra genom att skriva och tillämpa YAML-manifest. Styrenheter i klustret upptäcker de begärda ändringarna och vidtar åtgärder för att justera tillståndet. Detta sker asynkront efter att du har skickat in dina nya manifest.

Kontrollanter är ansvariga för att övervaka klustrets resurser, bedöma om de har avvikit från det definierade tillståndet och göra eventuella nödvändiga justeringar för att få dem tillbaka i linje. De är helt automatiserade komponenter som körs utan ingrepp.

Det finns flera typer av kontroller inom ekosystemet. Vissa agerar på klusternivå medan andra hanterar dina arbetsbelastningar. Vardagliga Kubernetes-resurser som du definierar i dina manifest kan vara kontroller: Deployment, ReplicaSet och liknande exempel uppfyller definitionen av en kontroller. De tar hand om kapslade objekt för att upprätthålla ett användardefinierat antal repliker.

Vad gör en styrenhet?

En styrenhet är allt i ditt kluster som spårar minst en annan Kubernetes-resurstyp. Styrenheter kan vara passiva eller aktiva. En aktiv kontrollant kommer själv att utföra nödvändiga åtgärder; passiva kommer att kommunicera ändringar till andra komponenter eller klustrets API-server.

Annons

Eftersom en kontrollers roll är avsiktligt abstrakt, har de ingen gemensam funktionalitet utöver deras övervakning av specifika objekt. Du kan ha en styrenhet som automatiskt tar bort Pods med en annotering som är berättigad till autodelete.

I Kubernetes är kontroller bara ett mönster för att implementera automatiserad kontrollslingafunktionalitet. Enskilda kontroller kommer att ha unika syften och egenskaper men de kommer alltid att övervaka ditt klusters objekt eller konfiguration.

Vad med operatörer?

En operatör är en specialiserad form av kontrollant. Operatörer implementerar kontrollmönstret, vilket innebär att de flyttar klustret mot ett definierat tillstånd, men de har också några extra egenskaper. Termen myntades ursprungligen av CoreOS men har nu också antagits mer brett av Kubernetes.

Operatorer är skräddarsydda för specifika applikationer. De lägger till Kubernetes API-tillägg via anpassade resursdefinitioner och skapar nya objekttyper som används av applikationen de hanterar.

Flera populära community-applikationer kommer nu med sina egna operatörer. Dessa gör det enklare att installera, konfigurera och underhålla den hanterade programvaran i ditt kluster. Det finns operatörer för etcd, Fluentd, Prometheus och många andra kritiska projekt som vanligtvis lanseras i kluster.

Dessa arbetsbelastningar kan vara komplexa och gjorda av flera individuella komponenter. De kommer sannolikt att inkludera applikationsspecifik logik som måste hanteras över installationens livscykel.

Annons

Operatörskonceptet ger ett sätt att övervaka dessa applikationer med samma principer som vanliga styrenheter. En operatör är helt enkelt en specialiserad styrenhet som använder anpassade resurser för att flytta en specifik applikation till korrekt användardefinierat tillstånd.

Du konfigurerar vanligtvis operatörer genom att tillhandahålla konfigurationsdata i en anpassad resurs. Operatören använder sin kunskap om applikationen för att konvertera dessa data till specifika åtgärder i klustret. Dessa åtgärder kommer att sammanställa en fungerande installation av appen som matchar tillståndet som definierats i konfigurationsresursen.

Vad används operatörer till?

Eftersom operatörer är domänspecifika kommer var och en att ha olika funktioner. I allmänhet kan du förvänta dig att en operatör erbjuder några av följande funktioner:

  • Automatisk övervakning och varning – Operatörer vet vanligtvis när deras applikationer inte fungerar korrekt och genererar lämpliga varningar.
  • Automatiska versionsuppgraderingar över tid– Operatörer kan ofta automatiskt tillämpa klusterändringar för att installera nya appuppdateringar när de blir tillgängliga. Detta minskar avsevärt underhållsbördan för operationsteam.
  • Installera anpassade resurser – Operatörer kommer att lägga till appens anpassade resurser till Kubernetes API-server, förbereda klustret för att vara värd för arbetsbelastningen.
  • Tillhandahålla automatisk skalning– En operatör med domänspecifik kunskap kan känna igen när det konfigurerade replikantalet är för lågt för att bekvämt betjäna aktuell trafik och skapa nya instanser för att bibehålla prestanda.
  • Livscykelhantering &#8211 ; Operatörer säkerställer att nya applikationsinstanser lanseras i en miljö där alla förutsättningar redan är uppfyllda. De kommer också att utföra all nödvändig rengöring efter att en replik har slutat.
  • Lagringshantering och säkerhetskopiering– Vissa operatörer hjälper till med uppsättningen av beständig lagring. Eftersom de förstår sin applikation kan de också göra säkerhetskopior innan de tillämpar en potentiellt destruktiv åtgärd.

Att montera all denna funktionalitet från grunden innan de distribuerar en ny arbetsbelastning skulle vara komplicerat och utmanande att underhålla. Operatörer låter dig lansera komplexa system i ditt kluster med hjälp av en leverantörsgodkänd strategi som är självhanterande och Kubernetes-inbyggd.

Fördelarna med operatörer kan tydligt observeras i vissa av de applikationer som erbjuder dem. GitLab-versionskontrollmjukvaran är en komplex stapel av komponenter men dess operatör tillhandahåller helautomatisk automatisk skalning, rullande uppgraderingar och säkerhetskopieringar, såväl som en metrisk visualiseringsstack med Prometheus och Grafana. Allt är klart att användas när du lägger till operatorn i ditt kluster.

En annan operatör är MongoDB: den erbjuder ett helt hanterat sätt att tillhandahålla lagring, databaser, användare och Mongo-inställningar från en enda uppsättning specifikationer som du definierar. Operatören konfigurerar sedan ditt kluster i enlighet med detta för att stödja din databas arbetsbelastning.

Annons

Du kan skriva dina egna operatorer genom att skapa en kontrollenhet med ett av Kubernetes klientbibliotek. Operatörer utvecklas genom att använda Kubernetes REST API för att fråga och interagera med klustret och dess objekt.

Slutsats

Styrenheter och operatörer är Kubernetes-termer för att beskriva styrplanskomponenter som övervakar resurser och tillämpar åtgärder för att ändra klustrets tillstånd. Medan kontrollanter är intresserade av operationer på Kubernetes-nivå har operatörer domänspecifik logik och är skräddarsydda för individuella applikationer.

Om du använder en operatör för att installera en applikation betyder det att du lägger till en komponent som kommer att titta på installationen, kontrollera att den fungerar normalt och automatisera tillståndsövergångar för uppdateringar eller konfigurationsändringar. Även om Helm-diagram redan har löst utmaningen med att distribuera en app och dess beroenden, går operatörerna ett steg längre: de tillhandahålls av appens leverantör, har intrikat kunskap om kraven på arbetsbelastningen och bibehålla ansvaret för installationen under hela dess livscykel.

Det är troligt att operatörerna kommer att fortsätta att öka i synlighet när mer komplexa tillståndsprogram börjar erbjuda dem. Automatisera underhåll, “dag två” uppgifter och uppgraderingar hjälper till att minska bördan för utträngda operationsteam och gör det lättare för nykomlingar att komma igång med produktionsklara driftsättningar.