Rook – samoobslužný dátový sklad pre Kubernetes

Rook – samoobslužný dátový sklad pre Kubernetes

29. januára technický výbor CNCF (Cloud Native Computing Foundation), organizácie stojacej za Kubernetes, Prometheus a ďalšími Open Source produktmi zo sveta kontajnerov a cloudových natívnych, oznámil o prijatí projektu havran do svojich radov. Vynikajúca príležitosť spoznať tento „distribuovaný skladový orchestrátor v Kubernetes“.

Aký druh veža?

havran je softvér napísaný v Go (distribuovaný pod bezplatnou licenciou Apache 2.0), ktorá je navrhnutá tak, aby poskytovala dátovým skladom automatizované funkcie, ktoré ich vytvárajú self-manažment, self-škálovanie a self-hojenie. Na tento účel Rook automatizuje (pre dátové úložiská používané v prostredí Kubernetes): nasadenie, bootstrapping, konfigurácia, poskytovanie, škálovanie, aktualizácie, migrácie, obnova po havárii, monitorovanie a správa zdrojov.

Projekt je vo fáze alfa a špecializuje sa na organizovanie distribuovaného úložného systému Ceph v klastroch Kubernetes. Autori tiež oznamujú plány na podporu ďalších úložných systémov, no v ďalších vydaniach sa tak nestane.

Komponenty a technické zariadenie

Rookova práca v Kubernetes je založená na špeciálnom operátorovi (viac o Kubernetes Operatoroch sme písali v v tomto článku), ktorý automatizuje konfiguráciu úložiska a implementuje jeho monitorovanie.

Takže, Operátor veže sa javí ako kontajner, ktorý obsahuje všetko potrebné pre nasadenie a následnú údržbu úložiska. Povinnosti prevádzkovateľa zahŕňajú:

  • vytvorenie sady DaemonSet pre démonov úložiska Ceph (ceph-osd) s jednoduchým klastrom RADOS;
  • vytváranie modulov na monitorovanie Ceph (s ceph-mon, kontrola stavu klastra; pre kvórum sú vo väčšine prípadov nasadené tri kópie, a ak niektorá z nich klesne, vznikne nová);
  • riadenie CRD (Definície vlastných zdrojov) pre seba zhluk, skladovacie bazény, sklady predmetov (množiny zdrojov a služieb na obsluhu HTTP požiadaviek, ktoré vykonávajú PUT/GET na objektoch – sú kompatibilné s S3 a Swift API)a súborové systémy;
  • inicializácia modulov na spustenie všetkých potrebných služieb;
  • vytvorenie agentov Rook.

Agenti Rooka sú reprezentované samostatnými modulmi, ktoré sú nasadené na každom uzle Kubernetes. Účelom agenta je konfigurácia pluginu FlexVolume, ktorý poskytuje podporu pre objemy úložiska v Kubernetes. Agent implementuje prevádzku úložiska: pripája sieťové úložné zariadenia, pripája zväzky, formátuje súborový systém atď.

Rook – samoobslužný dátový sklad pre Kubernetes
Miesto a úloha komponentov Rook v celkovej klastrovej schéme Kubernetes

Rook ponúka tri typy úložiska:

  1. blokovať (Blokovať, StorageClass) — namontuje zásobník do jedného ohniska;
  2. objekt (objekt, ObjectStore) - dostupné vo vnútri aj mimo klastra Kubernetes (cez S3 API);
  3. zdieľaný súborový systém (Systém zdieľaných súborov, Filesystem) je súborový systém, ktorý je možné pripojiť na čítanie a zápis z viacerých modulov.

Vnútorné časti veže zahŕňajú:

  • Mons — struky na monitorovanie Ceph (s už spomínaným ceph-mon);
  • OSD - moduly s démonmi ceph-osd (Démony ukladania objektov);
  • M.G.R. - strúčiky s démonom ceph-mgr (Ceph Manager), ktorý poskytuje ďalšie možnosti monitorovania a rozhrania pre externé systémy (monitorovanie/riadenie);
  • RGW (voliteľné) - struky s úložným priestorom predmetov;
  • MDS (voliteľné) - moduly so zdieľaným súborovým systémom.

Rook – samoobslužný dátový sklad pre Kubernetes

Všetky démony Rook (Mons, OSD, MGR, RGW, MDS) sú skompilované do jedného binárneho (rook) beh v kontajneri.

Pre krátke predstavenie projektu Rook môže byť užitočný aj tento krátky (12 snímok). predstavenie od Bassam Tabbara (CTO v Quantum Corp).

Obsluha veže

Operátor Rook plne podporuje Kubernetes verzie 1.6 a vyššie (a čiastočne aj staršie vydanie K8 - 1.5.2), jeho inštalácia в najjednoduchší scenár vyzerá takto:

cd cluster/examples/kubernetes
kubectl create -f rook-operator.yaml
kubectl create -f rook-cluster.yaml

Okrem toho je pripravený operátor Rook Tabuľka kormidla, vďaka čomu je možné inštaláciu vykonať takto:

helm repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook

Malé množstvo k dispozícii možnosti nastavenia (podporu môžete napríklad vypnúť RBAC, ak sa táto funkcia vo vašom klastri nepoužíva), ktoré sa prenášajú do helm install cez parameter --set key=value[,key=value] (alebo uložiť do samostatného súboru YAML a preniesť cez -f values.yaml).

Po nainštalovaní operátora Rook a spustení modulov s jeho agentmi zostáva už len vytvoriť samotný klaster Rook, ktorého najjednoduchšia konfigurácia 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: 1024

Poznámka: osobitná pozornosť by sa mala venovať atribútu dataDirHostPath, ktorého správna hodnota je potrebná na uloženie klastra po reštarte. Pre prípady, keď sa používa ako trvalé úložisko pre dáta Rook na hostiteľoch Kubernetes, autori odporúčajú mať v tomto adresári aspoň 5 GB voľného miesta na disku.

Zostáva len skutočne vytvoriť klaster z konfigurácie a uistiť sa, že pody boli vytvorené v klastri (v mennom priestore 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          5m

upgrade Rook cluster (až do novej verzie) je postup, ktorý v tejto fáze vyžaduje postupnú aktualizáciu všetkých jeho komponentov v určitom poradí a môžete ho spustiť až potom, čo sa ubezpečíte, že aktuálna inštalácia Rook je v úplne „zdravom“ stave. štát. Podrobné pokyny krok za krokom na príklade aktualizácie veža verzie 0.5.0 na 0.5.1 nájdete v projektovej dokumentácie.

Minulý november na blogu Rook bola zverejnená nákupný výkon s EBS. Jeho výsledky si zaslúžia pozornosť a v krátkosti sú nasledovné:

Rook – samoobslužný dátový sklad pre Kubernetes
Rook – samoobslužný dátový sklad pre Kubernetes

Vyhliadky

Momentálny stav Rooka je alfa a posledné hlavné vydanie k dnešnému dňu je Verzia 0.6, vydané v novembri 2017 (aktuálna oprava - v0.6.2 — vyšiel 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 vo výrobe).

Podľa plán projekt, vývojári majú podrobnú víziu vývoja Rooka v minimálne dvoch nasledujúcich vydaniach: 0.7 (jeho pripravenosť je v trackeri GitHub odhadovaný ako 60 %) a 0.8. Medzi očakávané zmeny patrí presun podpory Ceph Block a Ceph Object do stavu beta verzie, dynamické poskytovanie zväzkov pre CephFS, pokročilý logovací systém, automatické aktualizácie klastrov, podpora snímok pre zväzky.

Berie Rooka do čísla CNCF projekty (zatiaľ vo veľmi ranom štádiu – „počiatočná úroveň“ – na rovnakej úrovni ako linkerd и CoreDNS) je akousi zárukou rastúceho záujmu o produkt. Ako sa presadí vo svete cloudových aplikácií, bude jasnejšie po vydaní stabilných verzií, ktoré určite prinesú Rookovi nových testerov a používateľov.

PS

Prečítajte si aj na našom blogu:

Zdroj: hab.com

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster