Rook – samoobslužné úložiště dat pro Kubernetes

Rook – samoobslužné úložiště dat pro Kubernetes

29. ledna technická komise CNCF (Cloud Native Computing Foundation), organizace stojící za Kubernetes, Prometheus a dalšími produkty Open Source ze světa kontejnerů a cloudových nativních, oznámeno o přijetí projektu Havran do jejich řad. Skvělá příležitost poznat tento „distribuovaný skladovací orchestrátor v Kubernetes“.

Jaký druh věže?

Havran je software napsaný v Go (distribuovány pod bezplatnou licencí Apache 2.0), která je navržena tak, aby poskytovala datovým skladům automatizované funkce, které je vytvářejí self-management, self-scaleing a self-healing. K tomu Rook automatizuje (pro datová úložiště používaná v prostředí Kubernetes): nasazení, bootstrapping, konfigurace, zřizování, škálování, aktualizace, migrace, zotavení po havárii, monitorování a správa zdrojů.

Projekt je ve fázi alfa a specializuje se na orchestraci systému distribuovaného úložiště Ceph v clusterech Kubernetes. Autoři také oznamují plány na podporu dalších úložných systémů, ale to se v příštích vydáních nestane.

Komponenty a technické zařízení

Rookova práce uvnitř Kubernetes je založena na speciálním operátoru (více jsme o Kubernetes Operators psali v tento článek), který automatizuje konfiguraci úložiště a implementuje jeho monitorování.

To znamená, Operátor věže se jeví jako kontejner, který obsahuje vše potřebné pro nasazení a následnou údržbu úložiště. Mezi povinnosti provozovatele patří:

  • vytvoření sady DaemonSet pro démony úložiště Ceph (ceph-osd) s jednoduchým clusterem RADOS;
  • vytváření modulů pro monitorování Ceph (s ceph-mon, kontrola stavu clusteru; pro kvorum jsou ve většině případů nasazeny tři kopie, a pokud některá z nich klesne, vznikne nová);
  • správa CRD (Definice vlastních zdrojů) pro něho shluk, skladovací bazény, sklady objektů (sady zdrojů a služeb pro obsluhu HTTP požadavků, které provádějí PUT/GET na objektech – jsou kompatibilní s S3 a Swift API)a souborové systémy;
  • inicializace modulů pro spuštění všech nezbytných služeb;
  • vytvoření agentů Rook.

Agenti Rooka jsou reprezentovány samostatnými pody, které jsou nasazeny na každém uzlu Kubernetes. Účelem agenta je konfigurace pluginu FlexVolume, která poskytuje podporu pro objemy úložiště v Kubernetes. Agent implementuje provoz úložiště: připojuje síťová úložná zařízení, připojuje svazky, formátuje systém souborů atd.

Rook – samoobslužné úložiště dat pro Kubernetes
Místo a role komponent Rook v celkovém schématu clusteru Kubernetes

Rook nabízí tři typy úložiště:

  1. blok (Blokovat, StorageClass) — připevní úložiště k jedinému ohništi;
  2. objekt (Objekt, ObjectStore) - dostupné uvnitř i vně clusteru Kubernetes (přes S3 API);
  3. sdílený souborový systém (Systém sdílených souborů, Filesystem) je souborový systém, který lze připojit pro čtení a zápis z více modulů.

Vnitřnosti věže zahrnují:

  • Mons — pody pro monitorování Ceph (s již zmíněným ceph-mon);
  • OSD - moduly s démony ceph-osd (Démony úložiště objektů);
  • MGR - lusky s démonem ceph-mgr (Ceph Manager), který poskytuje další možnosti monitorování a rozhraní pro externí systémy (monitorování/řízení);
  • RGW (volitelný) - pody s uložením předmětů;
  • MDS (volitelný) - moduly se sdíleným systémem souborů.

Rook – samoobslužné úložiště dat pro Kubernetes

Všechny démony Rook (Mons, OSD, MGR, RGW, MDS) jsou zkompilovány do jediné binární (rook) běžící v kontejneru.

Pro krátké představení projektu Rook může být užitečný i tento krátký (12 snímků). představení od Bassam Tabbara (CTO ve společnosti Quantum Corp).

Ovládání věže

Operátor Rook plně podporuje Kubernetes verze 1.6 a vyšší (a částečně i starší vydání K8 - 1.5.2). Jeho instalace в nejjednodušší scénář Vypadá to takhle:

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

Navíc je připraven operátor Rook Tabulka kormidla, díky kterému lze instalaci provést takto:

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

Malé množství k dispozici možnosti nastavení (můžete například zakázat podporu RBAC, pokud se tato funkce ve vašem clusteru nepoužívá), které jsou předány helm install přes parametr --set key=value[,key=value] (nebo uložit do samostatného souboru YAML a odeslat přes -f values.yaml).

Po instalaci operátora Rook a spuštění podů s jeho agenty zbývá pouze vytvořit samotný cluster Rook, jehož nejjednodušší konfigurace vypadá 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: zvláštní pozornost by měla být věnována atributu dataDirHostPath, jehož správná hodnota je nezbytná pro uložení clusteru po restartu. Pro případy, kdy se používá jako trvalé úložiště dat Rook na hostitelích Kubernetes, autoři doporučují mít v tomto adresáři alespoň 5 GB volného místa na disku.

Zbývá pouze vytvořit cluster z konfigurace a ujistit se, že pody byly vytvořeny v clusteru (v jmenném prostoru 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

Upgradujte Rook cluster (až do nové verze) je postup, který v této fázi vyžaduje sekvenční aktualizaci všech jeho součástí v určitém pořadí a můžete jej spustit až poté, co se ujistíte, že aktuální instalace Rook je ve zcela „zdravém“ stavu. Stát. Podrobné pokyny krok za krokem na příkladu aktualizace věže verze 0.5.0 na 0.5.1 naleznete v projektová dokumentace.

Loni v listopadu na blogu Rook byl publikován srovnání výkon s EBS. Jeho výsledky si zaslouží pozornost a ve stručnosti jsou následující:

Rook – samoobslužné úložiště dat pro Kubernetes
Rook – samoobslužné úložiště dat pro Kubernetes

Vyhlídky

Rookův aktuální stav je alfa a poslední hlavní vydání k dnešnímu dni je Verze 0.6, vydáno v listopadu 2017 (aktuální oprava - v0.6.2 — vyšel 14. prosince). Již v první polovině roku 2018 se očekávají vydání vyspělejších verzí: beta a stabilní (oficiálně připravené k použití ve výrobě).

Podle plán V projektu mají vývojáři podrobnou vizi vývoje Rooka v minimálně dvou následujících verzích: 0.7 (její připravenost je v trackeru GitHub odhadnutý jako 60 %) a 0.8. Mezi očekávané změny patří převedení podpory Ceph Block a Ceph Object do stavu beta verze, dynamické zřizování svazků pro CephFS, pokročilý logovací systém, automatické aktualizace clusteru, podpora snímků svazků.

Převzít Rooka do čísla CNCF projekty (zatím ve velmi rané fázi - „počáteční úroveň“ - na stejné úrovni jako linkerd и CoreDNS) je jakousi zárukou rostoucího zájmu o produkt. Jak se prosadí ve světě cloudových aplikací, bude jasnější po vydání stabilních verzí, které Rookovi jistě přinesou nové testery a uživatele.

PS

Přečtěte si také na našem blogu:

Zdroj: www.habr.com

Přidat komentář