Som et eksempel har nogle af de centrale Kubernetes-komponenter som etcd deres tilsvarende operatører stillet til rådighed af CoreOs-projektet. Etcd er en distribueret nøgleværdilager, der afspejler kørselstilstanden for hele Kubernetes-klyngen på et givet øjeblik. Naturligvis er det en stateful applikation, og forskellige Kubernetes-controllere henviser til etcd for at finde ud af, hvad deres næste trin vil være. For eksempel vil ReplicaSet-controller se på antallet af bælg, der kører under en given vælger, og forsøge at bringe antallet af kørende forekomster til det antal, der er angivet af din ReplicaSet eller Implementering YAML. ReplicaSet refererer til etcd, der holder styr på antallet af kørende pods, og når antallet af pods er ændret til en ønsket værdi, vil etcd også opdatere sin registrering af det.
Men når det kommer til Stateful-applikationer, som etcd selv, kan vi ikke spinde flere bælg på tværs af forskellige noder uden nogen seriøs indblanding. Fordi alle kørende forekomster altid skal have data, der er i overensstemmelse med hinanden. Det er her, operatører er nyttige.
Forudsætninger
Hvis du ønsker at følge med i denne vejledning, kan du starte med noget lille som en Minikube installeret på din bærbare computer eller Kubernetes-distributionen, der følger med Docker til desktop.
Det vigtige er at have en forståelse af Kubernetes grundlæggende ideer til at begynde med.
Osv
Lad os oprette en operatør, der administrerer etcd på tværs af vores Kubernetes-klynge. Vi installerer ikke etcd som en Kubernetes-komponent (det vil sige i kube-systemets navneområde), men som en almindelig applikation. Fordi at gøre det ville sætte hele klyngen i fare. Når du er fortrolig med operatører, kan du dog bruge dem til at distribuere etcd i kube-systemet, mens du starter en ny klynge.
Jeg bruger Katacoda Playground her, og en nærmere inspektion af kube-systemets navneområde viser dig, at vi har en pod, der kører osv. Til os. Men det er ikke noget, vi vil rode med. Vi installerer etcd i standardnavneområdet, der administreres af etcd-operator
Fra start af standardnavneområdet er der ingen pods, der kører, vi har en ren skifer.
$ kubectl få bælgIngen ressourcer fundet.
Lad os nu installere en ny etcd-forekomst i dette navneområde. Vi starter med at klone lageret efterfulgt af en simpel kubectl-kommando.
$ git klon https: // github.com / coreos / etcd-operator.git$ cd etd-operatør
Opretter osv. Operatør
I repoen er der flere eksempler at operere på, den første ville oprette en simpel etcd-operatør ved hjælp af implementering.yaml fil. Før vi bruger det, skal vi først oprette en rolle til operatøren, via hvilken den kan styre og skalere etcd-klyngen. Du kan oprette denne rolle ved hjælp af et shell-script.
$ / eksempel / rbac / create_role.sh$ kubectl oprette -f ./ eksempel / implementering.yaml
Operatørobjektet oprettes med den sidste kommando, selvom der ikke er noget at betjene. Vi har endnu ikke en etcd-klynge. Så lad os oprette en.
$ kubectl oprette -f ./ eksempel / eksempel-etcd-klynge.yamlDette skaber en klynge af etcd bælg. Du kan se dem ved hjælp af:
$ kubectl få bælgNAVN KLAR STATUS OMSTARTER ALDER
etcd-operator-69b559656f-495vg 1/1 Kører 0 9m
eksempel-etcd-klynge-9bxfh657qq 1/1 Kører 0 23s
eksempel-etcd-klynge-ntzp4hrw79 1/1 Kører 0 8m
eksempel-etcd-cluster-xwlpqrzj2q 1/1 Kører 0 9m
Den første på denne liste er operatør-pod, som vil sikre, at etcd-klyngen opretholder en bestemt tilstand, som angivet i de yaml-filer, vi brugte tidligere. Hvis du prøver at slette en af de eksempler-etcd-cluster-bælg, oprettes en anden for at tage plads. Det ligner bemærkelsesværdigt, hvad ReplicaSet gør, men her er bælg stateful!
Operatører generelt
Som tidligere nævnt er operatører en generel ramme, inden for hvilken man kan implementere og administrere komplekse applikationer. Selve rammen er, hvad der gør dem nyttige, og de særlige eksempler som etcd-operatør eller Prometheus-operatør, som CoreOS giver, er beregnet til at fungere som en vejledning for dig til at udvikle din egen applikation på en lignende måde.
Et par vigtige aspekter af Kubernetes Operators er SDK'en bruges til at skrive, bygge og teste din egen brugerdefinerede operatør, det andet er ideen om Operatør Livscyklus Manager hvor du kan tænke på alle de forskellige faser, som din operatør samt den service, den tilbyder, kan gennemgå.
Livscyklusstadierne kan omfatte forskellige opdateringer, idet de finder ud af, hvilken operatør der kører i hvilke navneområder og også opdaterer operatørerne, når der kommer en ny version.
Referencer
Du kan læse meget mere om denne teknologi i:
- CoreOS 'oprindelige indlæg og
- Etcd-operatøren kan udforskes her