Som et eksempel, har noen av de viktigste Kubernetes-komponentene som etcd sine tilsvarende operatører gjort tilgjengelig av CoreOs-prosjektet. Etcd er en distribuert nøkkelverdi-butikk som gjenspeiler kjøringstilstanden til hele Kubernetes-klyngen til enhver tid. Naturligvis er det en stateful applikasjon, og forskjellige Kubernetes-kontrollere refererer til etcd for å finne ut hva deres neste trinn kommer til å bli. For eksempel vil ReplicaSet-kontrolleren se på antall pods som kjører under en gitt velger og prøve å bringe antall løpende forekomster til det antallet som er angitt av ReplicaSet eller Deployment YAML. ReplicaSet refererer til etcd som holder oversikt over antall løpende pods, og når antall pods er endret til ønsket verdi, vil etcd også oppdatere sin oversikt over det.
Men når det gjelder Stateful-applikasjoner, som etcd selv, kan vi ikke spinne opp flere pods over forskjellige noder uten alvorlig inngripen. Fordi alle løpende forekomster til enhver tid må ha data som er konsistente med hverandre. Dette er hvor operatører kommer godt med.
Forutsetninger
Hvis du ønsker å følge med i denne opplæringen, kan du starte med noe lite som en Minikube installert på den bærbare datamaskinen din, eller Kubernetes-distribusjonen som følger med Docker for desktop.
Det viktige er å ha en forståelse av de grunnleggende ideene til Kubernetes til å begynne med.
Etcd
La oss lage en operatør som vil administrere etcd på tvers av Kubernetes-klyngen. Vi installerer ikke etcd som en Kubernetes-komponent (det vil si i kube-systemets navneområde), men som en vanlig applikasjon. Fordi å gjøre det ville sette hele klyngen i fare. Når du er komfortabel med operatører, kan du imidlertid bruke dem til å distribuere etcd i kube-systemet mens du starter en ny klynge.
Jeg skal bruke Katacoda Playground her, og en nærmere inspeksjon av kube-systemets navneområde vil vise deg at vi har en pod som kjører osv. For oss. Men det er ikke noe vi skal fikle med. Vi installerer etcd i standard navneområde administrert av etcd-operator
Å starte med standard navneområdet har ingen pods som kjører, vi har en ren skifer.
$ kubectl få podsIngen ressurser funnet.
La oss nå installere en ny etcd-forekomst i dette navneområdet. Vi starter med å klone depotet etterfulgt av en enkel kubectl-kommando.
$ git klon https: // github.com / coreos / etcd-operator.git$ cd etd-operator
Opprette Etcd-operatør
I repoen er det flere eksempler å operere på, den første vil opprette en enkel etcd-operatør som bruker utplassering.yaml fil. Før vi bruker det, må vi først lage en rolle for operatøren som kan administrere og skalere etcd-klyngen. Du kan opprette den rollen ved hjelp av et skallskript.
$ / eksempel / rbac / create_role.sh$ kubectl create -f ./ eksempel / distribusjon.yaml
Operatørobjektet vil bli opprettet med den siste kommandoen, selv om det ikke er noe å operere på. Vi har ikke en etcd-klynge ennå. Så la oss lage en.
$ kubectl create -f ./ eksempel / eksempel-etcd-klynge.yamlDette skaper en klynge med etcd-bøtter. Du kan se dem ved hjelp av:
$ kubectl få podsNAVN KLAR STATUS RESTARTER ALDER
etcd-operator-69b559656f-495vg 1/1 Kjører 0 9m
eksempel-etcd-klynge-9bxfh657qq 1/1 Kjører 0 23s
eksempel-etcd-klynge-ntzp4hrw79 1/1 Kjører 0 8m
eksempel-etcd-klynge-xwlpqrzj2q 1/1 Kjører 0 9m
Den første i denne listen er operatørpoden som vil sikre at etcd-klyngen opprettholder en viss tilstand, som angitt i yaml-filene vi brukte tidligere. Hvis du prøver å slette en av eksempel-etcd-klyngepodene, vil en annen opprettes for å ta plass. Det er bemerkelsesverdig likt det ReplicaSet gjør, men her er pods stateful!
Operatører generelt
Som nevnt tidligere er operatører et generelt rammeverk der man kan distribuere og administrere komplekse applikasjoner. Selve rammeverket er det som gjør dem nyttige, og de spesifikke eksemplene som etcd-operatør eller Prometheus-operatør som CoreOS gir, er ment å fungere som en guide for deg å utvikle din egen applikasjon på en lignende måte.
Noen få viktige aspekter ved Kubernetes Operators er SDK brukes til å skrive, bygge og teste din egen tilpassede operatør, den andre er ideen om Operatør Livsløpssjef hvor du kan tenke på alle de forskjellige trinnene som operatøren din, samt tjenesten den tilbyr kan gjennomgå.
Livssyklusstadiene kan omfatte forskjellige oppdateringer, og finne ut hvilken operatør som kjører i hvilke navnerom, og også oppdatere operatørene når en ny versjon kommer.
Referanser
Du kan lese mye mer om denne teknologien i:
- CoreOS 'opprinnelige innlegg, og
- Etcd-operatøren kan utforskes her