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å skidaInga 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.yamlDetta skapar ett kluster av etcd pods. Du kan se dem med:
$ kubectl få skidaNAMN 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:
- CoreOS ursprungliga inlägg, och
- Etcd-operatören kan utforska här