Kubernetes

Kubernetes Operator Tutorial

Kubernetes Operator Tutorial
Kubernetes Operators är ett koncept som introducerades av CoreOS-projektet för att utöka Kubernetes kapacitet, särskilt hanteringen av Stateful-applikationer. Det ska förenkla hela livscykeln för stateful resurser från att förpacka applikationen och distribuera den till ett Kubernetes-kluster hela vägen upp till att hantera och skala appen.

Som ett exempel har några av Kubernetes kärnkomponenter som etcd sina motsvarande operatörer gjort tillgängliga av CoreOs-projektet. Etcd är en distribuerad nyckel-värdebutik som speglar körningstillståndet för hela Kubernetes-klustret vid varje givet ögonblick. Naturligtvis är det en statlig applikation och olika Kubernetes-kontroller hänvisar till etcd för att ta reda på vad deras nästa steg kommer att bli. ReplicaSet-kontroller kommer till exempel att titta på antalet pods som körs under en viss väljare och försöka sätta antalet körinstanser som är lika med det antal som anges av din ReplicaSet eller Deployment YAML. ReplicaSet refererar till etcd som håller reda på antalet löpande pods och när antalet pods har ändrats till önskat värde skulle etcd också uppdatera sin post av det.

Men när det gäller Stateful-applikationer, som etcd i sig, kan vi inte snurra upp fler pods över olika noder utan något allvarligt ingripande. Eftersom alla löpande instanser måste ha data som överensstämmer med varandra hela tiden. Det är här operatörer kommer till nytta.

Förutsättningar

Om du vill följa med i den här handledningen kan du börja med något litet som en Minikube installerad på din bärbara dator eller Kubernetes-distributionen som medföljer Docker för skrivbordet.

Det viktiga är att först ha en förståelse för Kubernetes grundidéer.

Etcd

Låt oss skapa en operatör som skulle hantera etcd i vårt Kubernetes-kluster. Vi installerar inte etcd som en Kubernetes-komponent (det vill säga i kube-systemets namnområde) utan som en vanlig applikation. För att göra det skulle riskera hela klustret. När du väl är bekväm med operatörer kan du dock använda dem för att distribuera etcd i kube-systemet när du startar upp ett nytt kluster.

Jag kommer att använda Katacoda Playground här, och en närmare granskning av kube-systemets namnrymd skulle visa dig att vi har en pod som körs etcd för oss. Men det är inte något vi kommer att lura med. Vi installerar etcd i standardnamnområdet som hanteras av etcd-operator

Från och med att standardnamnutrymmet inte har några pods, vi har en ren skiffer.

$ kubectl få skida

Inga resurser hittades.

Låt oss nu installera en ny etcd-instans i detta namnutrymme. Vi börjar med att klona förvaret följt av ett enkelt kubectl-kommando.

$ git-klon https: // github.com / coreos / etcd-operator.git
$ cd etd-operatör

Skapa Etcd Operator

I repo finns det flera exempel att arbeta på, det första skulle skapa en enkel etcd-operatör med spridning.yaml fil. Innan vi använder det måste vi först skapa en roll för operatören som kan hantera och skala etcd-klustret. Du kan skapa den rollen med ett skalskript.

$ / exempel / rbac / create_role.sh
$ kubectl skapa -f ./ exempel / distribution.yaml

Operatörsobjektet skapas med det sista kommandot även om det inte finns något att arbeta med. Vi har inte ett etcd-kluster ännu. Så låt oss skapa en.

$ kubectl skapa -f ./ exempel / exempel-etcd-kluster.yaml

Detta skapar ett kluster av etcd pods. Du kan se dem med:

$ kubectl få skida
 
NAMN KLAR STATUS ÅTERSTART ÅLDER
etcd-operator-69b559656f-495vg 1/1 Körning 0 9m
exempel-etcd-cluster-9bxfh657qq 1/1 Running 0 23s
exempel-etcd-kluster-ntzp4hrw79 1/1 Running 0 8m
exempel-etcd-kluster-xwlpqrzj2q 1/1 Kör 0 9m

Den första i den här listan är operatörsplattan som skulle säkerställa att etcd-klustret bibehåller ett visst tillstånd, som anges i yaml-filerna vi använde tidigare. Om du försöker ta bort en av de exempel-etcd-klusterpodarna skapas en annan för att ta sin plats. Det är anmärkningsvärt likt det som ReplicaSet gör men här är pods stateful!

Operatörer i allmänhet

Som nämnts tidigare är operatörer en allmän ram inom vilken man kan distribuera och hantera komplexa applikationer. Ramen i sig är det som gör dem användbara och de specifika exemplen som etcd-operatör eller Prometheus-operatör som CoreOS tillhandahåller är avsedda att fungera som en guide för dig att utveckla din egen applikation på liknande sätt.

Några viktiga aspekter av Kubernetes Operators är SDK: n används för att skriva, bygga och testa din egen anpassade operatör, den andra är idén om Operatörens livscykelchef där du kan tänka på alla de olika faserna som din operatör och den service den erbjuder kan gå igenom.

Livscykelstegen kan innehålla olika uppdateringar, ta reda på vilken operatör som kör i vilka namnområden och även uppdatera operatörerna när en ny version kommer.

Referenser

Du kan läsa mycket mer om den här tekniken i:

  1. CoreOS ursprungliga inlägg, och
  2. Etcd-operatören kan utforska här
Bästa Gamepad Mapping Apps för Linux
Om du gillar att spela spel på Linux med en gamepad istället för ett typiskt tangentbord och musinmatningssystem, finns det några användbara appar för...
Användbara verktyg för Linux-spelare
Om du gillar att spela spel på Linux är chansen att du kan ha använt appar och verktyg som Wine, Lutris och OBS Studio för att förbättra spelupplevels...
HD Remastered Games för Linux som aldrig tidigare hade en Linux-version
Många spelutvecklare och utgivare kommer med HD-remaster av gamla spel för att förlänga livstiden för franchisen, snälla fans som begär kompatibilitet...