
29. januára technický výbor organizácie CNCF (Cloud Native Computing Foundation), ktorá stojí za Kubernetes, Prometheus a ďalšími open source produktmi v oblasti kontajnerov a cloud native, schválil projekt Rook do svojich radov. Skvelá príležitosť na hlbšie spoznanie tohto „orchestrátora systémov distribuovaného ukladania dát v Kubernetes“.
Čo je to Rook?
je to softvér napísaný v Go ( pod lícenciou Apache License 2.0), určený na vybavenie úložísk dát automatizovanými funkciami, ktoré ich robia samostatne riaditeľnými, samoškálovateľnými a samovzRecoverovateľnými.Na to Rook automatizuje (pre úložiská dát používané v prostredí Kubernetes): nasadzovanie, bootstrapping, konfiguráciu, provisioning, škálovanie, aktualizácie, migrácie, obnovu po výpadkoch, monitorovanie a správu zdrojov.
Projekt sa nachádza v alfa štádiu a špecializuje sa na orchestráciu distribuovaného systému ukladania dát Ceph v klastroch Kubernetes. Autori taktiež vyhlasujú plány na podporu iných systémov ukladania, ale to sa nestane v najbližších vydaniach.
Komponenty a technické zariadenie
V základe fungovania Rook v Kubernetes je špeciálny operátor (o Kubernetes operátoroch sme písali v ), automatizujúci konfiguráciu úložiska a realizujúci jeho monitorovanie.
Takže, operátor Rook sa predstavuje ako kontajner, ktorý obsahuje všetko potrebné na nasadenie a následnú údržbu úložiska. Medzi povinnosti operátora patrí:
- vytvorenie DaemonSet pre démony ukladania Ceph () so jednoduchým klastrom RADOS;
- vytvorenie podov pre monitorovanie Ceph (s ktoré kontrolujú stav klastru; pre kvórum sa vo väčšine prípadov nasadzujú tri inštancie, a pri výpadku akejkoľvek z nich sa spustí nová);
- správa CRDs () pre samotný , , (súbory zdrojov a služieb na obsluhu HTTP požiadaviek, ktoré vykonávajú PUT/GET pre objekty, — sú kompatibilné s S3 a Swift API), ako aj ;
- inicializácia podov na spustenie všetkých potrebných služieb;
- vytvorenie agentov Rook.
Agenti Rook sú reprezentovaní samostatnými podmi, ktoré sa nasadzujú na každom uzle Kubernetes. Účelom agenta je konfigurácia pluginu , zabezpečujúce podporu úložných objemov v Kubernetes. Agent realizuje správu úložiska: prepája sieťové úložné zariadenia, montuje objemy, formátuje súborový systém a pod.

Miesto a úloha komponentov Rook v celkovej schéme klastera Kubernetes
Rook ponúka tri druhy úložiska:
- (Block,
StorageClass) — pripojuje úložisko k jednému podu; - (Object,
ObjectStore) — dostupné vo vnútri aj mimo klastera Kubernetes (cez S3 API); - (Shared File System,
Súborový systém) — súborový systém, ktorý môže byť montovaný na čítanie a zápis z viacerých podov.
Interné zariadenie Rook zahŕňa:
- Mons — pody pre monitoring Ceph (s už spomenutými ceph-mon);
- OSDs — pody s démonmi ceph-osd (Object Storage Daemons);
- MGR — pody s démonom (Ceph Manager), poskytujúcim ďalšie možnosti monitorovania a rozhrania pre externé systémy (monitorovania/riadenia);
- RGW (voliteľne) — pody s objektovým úložiskom;
- MDS (voliteľne) — pody so zdieľanou FS.

Všetky démoni Rook (Mons, OSDs, MGR, RGW, MDS) sú skompilované v jednom binárnom súbore (rook), spúšťaný v kontejnere.
Pre stručné predstavenie projektu Rook môže byť užitočná aj táto malá (12 snímkov) od Bassama Tabbary (CTO v Quantum Corp).
Prevádzka Rook
Operátor Rook plne podporuje Kubernetes verzie 1.6 a vyššie (a čiastočne, staršiu verziu K8s — 1.5.2). Jeho inštalácia v vyzerá takto:
cd cluster/examples/kubernetes
kubectl create -f rook-operator.yaml
kubectl create -f rook-cluster.yamlOkrem toho, pre operátora Rook je pripravený , vďaka čomu môže byť inštalácia vykonaná aj takto:
helm repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook Existuje obmedzené množstvo (napríklad, môžete vypnúť podporu , ak táto možnosť nie je vo vašom klasteri používaná), ktoré sa odovzdávajú v helm install cez parameter --set key=value[,key=value] (alebo uchovávať v samostatnom YAML súbore a odovzdávať — cez -f values.yaml).
Po inštalácii operátora Rook a spustení podov s jeho agentmi zostáva vytvoriť samotný klaster Rook, najjednoduchšia konfigurácia, ktorá vyzerá takto (rook-cluster.yaml):
apiVersion: v1
kind: Namespace
metadata:
name: rook
---
apiVersion: rook.io/v1alpha1
kind: Cluster
metadata:
name: rook
namespace: rook
spec:
dataDirHostPath: /var/lib/rook
storage:
useAllNodes: true
useAllDevices: false
storeConfig:
storeType: bluestore
databaseSizeMB: 1024
journalSizeMB: 1024Poznámka: osobitnú pozornosť si zasluhuje atribút dataDirHostPath, ktorého správna hodnota je potrebná na udržanie klastra po reštartoch. Pre prípady jeho využitia ako trvalého úložiska dát Rook na hostoch Kubernetes autori odporúčajú mať v tomto adresári aspoň 5 GB voľného diskového priestoru.
Zostáva vlastne vytvoriť klaster z konfigurácie a uistiť sa, že pody sa vytvorili v klastri (v priestore názvov rook):
kubectl create -f rook-cluster.yaml
kubectl -n rook get pod
NAME READY STATUS RESTARTS AGE
rook-api-1511082791-7qs0m 1/1 Running 0 5m
rook-ceph-mgr0-1279756402-wc4vt 1/1 Running 0 5m
rook-ceph-mon0-jflt5 1/1 Running 0 6m
rook-ceph-mon1-wkc8p 1/1 Running 0 6m
rook-ceph-mon2-p31dj 1/1 Running 0 6m
rook-ceph-osd-0h6nb 1/1 Running 0 5mUpgrade aktualizácia klastra Rook (do novej verzie) je proces, ktorý v súčasnosti vyžaduje postupné aktualizovanie všetkých jeho komponentov v určitej sekvencii, a začať ju možno až po tom, čo ste sa presvedčili o úplne „zdravom“ stave aktuálnej inštalácie Rook. Podrobný krok-za-krokom návod pomocou aktualizácie Rook verzie 0.5.0 na 0.5.1 nájdete v .
V novembri minulého roka na blogu Rook porovnanie výkonu s EBS. Jeho výsledky stoja za to, a ak to zhrnieme, tak sú takéto:


Vyhliadky
Aktuálny stav Rook je alpha a posledným veľkým vydaním k dnešnému dňu je , vydaná v novembri 2017 (aktuálne opravenie — — vyšlo 14. decembra). Už v prvej polovici roku 2018 sa očakávajú vydania zrelších verzií: beta a stabilná (oficiálne pripravená na použitie v produkcii).
Podľa projektu, majú vývojári podrobnú víziu rozvoja Rook aspoň v dvoch najbližších vydaniach: 0.7 (jeho pripravenosť v trackeri GitHub ako 60 %) a 0.8. Medzi očakávané zmeny patrí prechod podpory Ceph Block a Ceph Object do statusu beta, dynamické provisionovanie objemov pre CephFS, pokročilý systém logovania, automatizované aktualizácie klastra, podpora snapshotov pre objemy.
Zaradenie Rook medzi (prezatím na najskoršej úrovni — „inception-level“, — spolu s a ) je akýmsi zárukou rastúceho záujmu o produkt. Ako sa usadí vo svete cloudových aplikácií, stane sa jasnejším po objavení stabilných verzií, ktoré bezpochyby prinesú Rook nových „testovateľov“ a používateľov.
P.S.
Prečítajte si tiež na našom blogu:
- «»;
- «»;
- «»;
- «»;
- «».
Zdroj: habr.com
