Na primer, nekatere ključne komponente Kubernetes, kot je etcd, imajo ustrezne operaterje, ki so na voljo v projektu CoreOs. Etcd je porazdeljena shramba ključ-vrednost, ki v vsakem trenutku odraža stanje celotne gruče Kubernetes. Seveda gre za aplikacijo s stanjem in različni krmilniki Kubernetes se sklicujejo na etcd, da bi ugotovili, kakšen bo njihov naslednji korak. Na primer, krmilnik ReplicaSet si bo ogledal število pods, ki se izvajajo pod določenim izbirnikom, in poskusil približati število delujočih primerkov številu, ki ga določa vaš ReplicaSet ali YAML razmestitve. ReplicaSet se nanaša na etcd, ki beleži število delujočih strokov in ko se število pods spremeni v želeno vrednost, bi etcd posodobil tudi svoj zapis o njem.
Toda ko gre za aplikacije Stateful, kot je sam etcd, brez resnejšega posredovanja ne moremo zavrteti več strokov v različnih vozliščih. Ker morajo imeti vsi delujoči primerki ves čas skladne podatke. Tu so operaterji prav prišli.
Pogoji
Če želite nadaljevati v tej vadnici, lahko začnete z nečim majhnim, kot je Minikube, nameščen na prenosnem računalniku, ali distribucija Kubernetes, ki je priložena Dockerju za namizje.
Pomembno je, da za začetek razumemo osnovne ideje Kubernetesa.
Itd
Ustvarimo operaterja, ki bi upravljal etcd v naši gruči Kubernetes. Etcd ne bomo namestili kot komponento Kubernetes (se pravi v imenskem prostoru sistema kube), temveč kot običajno aplikacijo. Ker bi s tem ogrozili celotno skupino. Ko pa so operaterji udobni, jih lahko uporabite za razmestitev etcd v sistem kube, ko zaženete novo gručo.
Tukaj bom uporabljal igrišče Katacoda, natančnejši pregled imenskega prostora sistema kube pa bi vam pokazal, da imamo en pod, ki teče itdd za nas. Ampak to ni nekaj, s čimer se bomo ukvarjali. Etcd bomo namestili v privzeti imenski prostor, ki ga upravlja etcd-operator
Zagon privzetega imenskega prostora ne izvaja nobenih podstavkov, imamo čisto skrivnost.
$ kubectl dobite strokeNi virov.
Zdaj pa namestimo nov primerek etcd v tem imenskem prostoru. Začnemo s kloniranjem repozitorija, čemur sledi preprost ukaz kubectl.
$ git klon https: // github.com / coreos / etcd-operator.git$ cd etd-operator
Ustvarjanje Etcd operaterja
V repo je več primerov, na katerih bi lahko delovali, prvi bi ustvaril preprost operator etcd z uporabo uvajanje.yaml mapa. Preden to uporabimo, moramo najprej ustvariti vlogo za operaterja, prek katerega lahko upravlja in spreminja gručo etcd. To vlogo lahko ustvarite s skriptom lupine.
$ / example / rbac / create_role.sh$ kubectl ustvari -f ./ primer / razmestitev.yaml
Objekt operaterja bo ustvarjen z zadnjim ukazom, čeprav ne bo nič, s čimer bi lahko delovali. Gručice etcd še nimamo. Ustvarimo ga torej.
$ kubectl ustvari -f ./ example / example-etcd-cluster.yamlTo ustvari skupko pods datotek etcd. Lahko jih vidite s pomočjo:
$ kubectl dobite strokeIME PRIPRAVLJENO STANJE ZAVARUJE STAROST
etcd-operator-69b559656f-495vg 1/1 Tek 0 9m
primer-etcd-cluster-9bxfh657qq 1/1 Deluje 0 23s
primer-etcd-cluster-ntzp4hrw79 1/1 Tek 0 8m
primer-etcd-cluster-xwlpqrzj2q 1/1 Deluje 0 9m
Prvi na tem seznamu je operator pod, ki bi zagotovil, da gruča etcd ohrani določeno stanje, kot je navedeno v datotekah yaml, ki smo jih uporabili prej. Če poskusite izbrisati enega od podskupin-etcd-cluster, bo na njegovo mesto ustvarjen še en. To je izredno podobno tistemu, kar počne ReplicaSet, toda tukaj so stroki državni!
Operaterji na splošno
Kot smo že omenili, so operaterji splošni okvir, znotraj katerega je mogoče uvesti in upravljati zapletene aplikacije. Sam okvir je tisto, zaradi česar so uporabni, in nekateri primeri, kot so operator etcd ali operater Prometheus, ki jih ponuja CoreOS, naj bi vam delovali kot vodilo za razvoj lastne aplikacije na podoben način.
Nekaj pomembnih vidikov operaterjev Kubernetes je SDK uporablja se za pisanje, izdelavo in preizkušanje lastnega operaterja po meri, druga pa je ideja Upravitelj življenjskega cikla operaterja pri čemer lahko razmišljate o vseh različnih stopnjah, ki jih lahko preživijo vaš operater in storitve, ki jih ponuja.
Faze življenjskega cikla lahko vključujejo različne posodobitve, ugotavljanje, kateri operater se izvaja v katerih imenskih prostorih, in posodabljanje operaterjev, ko pride nova različica.
Reference
Veliko več o tej tehnologiji lahko preberete v:
- Prvotna objava CoreOS in
- Operater etcd lahko raziskujete tukaj