Například některé základní komponenty Kubernetes jako etcd mají své odpovídající operátory zpřístupněné projektem CoreOs. Etcd je úložiště distribuovaných klíčů a hodnot, které odráží aktuální stav celého klastru Kubernetes v daném okamžiku. Přirozeně se jedná o stavovou aplikaci a různé řadiče Kubernetes odkazují na etcd, aby zjistili, jaký bude jejich další krok. Například řadič ReplicaSet se podívá na počet lusků spuštěných pod daným selektorem a pokusí se přinést počet spuštěných instancí rovný počtu určenému vaší ReplicaSet nebo Deployment YAML. ReplicaSet odkazuje na etcd, který sleduje počet běžících lusků a jakmile se počet lusků změní na požadovanou hodnotu, etcd by také aktualizoval svůj záznam.
Ale pokud jde o stavové aplikace, jako je samotný etcd, nemůžeme roztočit více lusků napříč různými uzly bez vážného zásahu. Protože všechny spuštěné instance musí mít neustále konzistentní data. To je místo, kde se operátoři hodí.
Předpoklady
Pokud si přejete postupovat v tomto výukovém programu, můžete začít s něčím malým, jako je Minikube nainstalovaný ve vašem notebooku, nebo s distribucí Kubernetes dodávanou s Dockerem pro stolní počítače.
Důležité je nejprve porozumět základním myšlenkám Kubernetes.
Atd
Pojďme vytvořit operátora, který by spravoval etcd v našem klastru Kubernetes. Nebudeme instalovat etcd jako součást Kubernetes (tj. V oboru jmen kube-system), ale jako běžná aplikace. Protože by to ohrozilo celý klastr. Jakmile vám však budou operátoři vyhovovat, můžete je použít k nasazení etcd v systému kube při zavádění nového klastru.
Budu zde používat Katacoda Playground a bližší prohlídka oboru jmen kube-system vám ukáže, že máme pro nás jeden pod běžící etcd. Ale to není něco, na čem budeme hrát. Nainstalujeme etcd do výchozího jmenného prostoru spravovaného operátorem etcd
Spuštění výchozího jmenného prostoru nemá spuštěné žádné lusky, máme čistou tabulku.
$ kubectl získat luskyNebyly nalezeny žádné zdroje.
Nyní pojďme do tohoto jmenného prostoru nainstalovat novou instanci etcd. Začneme klonováním úložiště a následným jednoduchým příkazem kubectl.
$ git clone https: // github.com / coreos / etcd-operator.sakra$ cd operátor etd
Vytváření operátora Etcd
V repo existuje několik příkladů, se kterými se dá pracovat, první by vytvořil jednoduchý operátor etcd pomocí rozvinutí.yaml soubor. Než to použijeme, musíme nejprve vytvořit roli pro operátora, pomocí které lze spravovat a škálovat cluster atd. Tuto roli můžete vytvořit pomocí skriptu prostředí.
$ / example / rbac / create_role.sh$ kubectl create -f ./ příklad / nasazení.yaml
Objekt operátoru bude vytvořen posledním příkazem, ačkoli na něm nebude nic fungovat. Zatím nemáme cluster etcd. Pojďme si tedy jeden vytvořit.
$ kubectl create -f ./ example / example-etcd-cluster.yamlTím se vytvoří shluk atdd lusků. Můžete je vidět pomocí:
$ kubectl získat luskySTAV JMÉNA PŘIPRAVENO VĚC RESTARTUJE
etcd-operator-69b559656f-495vg 1/1 Běh 0 9 m
example-etcd-cluster-9bxfh657qq 1/1 běží 0 23 s
example-etcd-cluster-ntzp4hrw79 1/1 běží 0 8 m
example-etcd-cluster-xwlpqrzj2q 1/1 Běh 0 9 m
První v tomto seznamu je podložka operátora, která by zajistila, že si klastr etcd udrží určitý stav, jak je uvedeno v souborech yaml, které jsme použili dříve. Pokud se pokusíte odstranit jeden z příkladů pod-etcd-cluster, vytvoří se další, který zaujme jeho místo. To je pozoruhodně podobné tomu, co dělá ReplicaSet, ale zde jsou pody stavové!
Provozovatelé obecně
Jak již bylo zmíněno dříve, operátoři jsou obecným rámcem, ve kterém lze nasadit a spravovat složité aplikace. Samotný rámec je to, co je činí užitečnými, a konkrétní příklady jako operátor etcd nebo operátor Prometheus, které poskytuje CoreOS, mají sloužit jako vodítko pro vývoj vaší vlastní aplikace podobným způsobem.
Několik důležitých aspektů operátorů Kubernetes je SDK používá se pro psaní, vytváření a testování vašeho vlastního operátora, druhým je myšlenka Správce životního cyklu operátora ve kterém můžete přemýšlet o všech různých fázích, kterými může váš operátor i služba, kterou nabízí, projít.
Fáze životního cyklu mohou zahrnovat různé aktualizace, zjišťování, který operátor běží ve kterých jmenných prostorech, a také aktualizaci operátorů, když přijde nová verze.
Reference
O této technologii si můžete přečíst mnohem více v:
- Původní příspěvek CoreOS a
- Operátor atd. Lze prozkoumat zde