
29. ledna technický výbor organizace CNCF (Cloud Native Computing Foundation), stojící za Kubernetes, Prometheus a dalšími Open Source produkty z oblasti kontejnerů a cloud native, přijal projekt Rook do svých řad. Skvělá příležitost blíže se seznámit s tímto „orchestrátorem systémů rozděleného úložiště dat v Kubernetes“.
Co je Rook?
— je to software napsaný v Go ( podlicencí Apache License 2.0), určený k vybavení úložišť dat automatizovanými funkcemi, které je činí samořídícími, samoškálovacími a samoobnovujícími se. K tomu Rook automatizuje (pro úložiště dat používaná v prostředí Kubernetes): nasazení, bootstrapping, konfiguraci, provisioning, škálování, aktualizace, migrace, zotavení po selhání, monitoring a správu zdrojů.
Projekt se nachází v alfa fázi a specializuje se na orchestraci rozvedeného systému úložiště dat Ceph v clusterech Kubernetes. Autoři rovněž uvádějí plány na podporu dalších systémů úložiště, ale to se nestane v nejbližších verzích.
Komponenty a technické zařízení
Základem fungování Rook uvnitř Kubernetes je speciální operátor (více o Kubernetes Operators jsme psali v ), automatizující konfiguraci úložiště a realizující jeho monitoring.
Takže, Operátor Rook se prezentuje jako kontejner, který obsahuje vše potřebné pro nasazení a následnou údržbu úložiště. Mezi povinnosti operátora patří:
- vytvoření DaemonSet pro demony úložiště Ceph () s jednoduchým klastrem RADOS;
- vytvoření podů pro monitoring Ceph (s , ověřujícími stav clustera; pro kvórum se většinou nasazují tři instance, a při selhání jakékoliv z nich se zvedne nová);
- správa CRDs () pro samotný , , (sady prostředků a služeb pro obsluhu HTTP dotazů, vykonávající PUT/GET pro objekty, — jsou kompatibilní s S3 a Swift API), a také ;
- inicializace podů pro spuštění všech potřebných služeb;
- vytvoření agentů Rook.
Agenti Rook jsou představeni jednotlivými podmi, které se nasazují na každém uzlu Kubernetes. Účel agenta — konfigurace pluginu , která poskytuje podporu pro úložné svazky v Kubernetes. Agent zajišťuje správu úložiště: připojuje síťová úložiště, montuje svazky, formátuje souborový systém atd.

Místo a role komponent Rook v celkovém schématu clusteru Kubernetes
Rook nabízí tři typy úložišť:
- (Block,
StorageClass) — montuje úložiště k jedinému podu; - (Object,
ObjectStore) — dostupné uvnitř i vně clusteru Kubernetes (přes S3 API); - (Shared File System,
Filesystem) — souborový systém, který lze připojit pro čtení i zápis z více podů.
Vnitřní zařízení Rook zahrnuje:
- Mons — pody pro monitorování Ceph (s již zmíněnými ceph-mon);
- OSDs — pody s démony ceph-osd (Object Storage Daemons);
- MGR — pody s démonem (Ceph Manager), poskytující další možnosti monitorování a rozhraní pro externí systémy (monitorování / správa);
- RGW (volitelně) — pody s objektovým úložištěm;
- MDS (volitelně) — pody se sdíleným FS.

Všechny démony Rook (Mons, OSDs, MGR, RGW, MDS) jsou zkompilovány do jednoho binárního souboru (rook), spuštěného v kontejneru.
Pro stručné představení projektu Rook se hodí také tato malá (12 slidů) od Bassama Tabbary (CTO ve Quantum Corp).
Provoz Rook
Operátor Rook plně podporuje Kubernetes verze 1.6 a vyšší (a částečně starší verzi K8s — 1.5.2). Jeho instalace v vypadá takto:
cd cluster/examples/kubernetes
kubectl create -f rook-operator.yaml
kubectl create -f rook-cluster.yamlKromě toho byl pro operátora Rook připraven , takže instalace může probíhat i takto:
helm repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook Existuje malé množství (například lze zakázat podporu , pokud tato možnost není ve vašem clusteru používána), které se předávají v helm install pomocí parametru --set key=value[,key=value] (nebo je uchovat v samostatném YAML souboru a předávat — přes -f values.yaml).
Po instalaci operátora Rook a spuštění podů s jeho agenty zbývá 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: 1024Poznámka: zvláštní pozornost je třeba věnovat atributu dataDirHostPath, jehož správná hodnota je nutná k udržení clusteru po restartu. Pro případy jeho použití jako trvalého místa pro ukládání dat doporučují autoři Rook mít v tomto adresáři alespoň 5 GB volného místa na disku.
Zůstává vlastně vytvořit cluster z konfigurace a ujistit se, že podů byly vytvořeny v clusteru (v prostoru názvů rook):
kubectl create -f rook-cluster.yaml
kubectl -n rook get pod
NAZEV READY STATUS RESTARTY VĚK
rook-api-1511082791-7qs0m 1/1 Běžící 0 5m
rook-ceph-mgr0-1279756402-wc4vt 1/1 Běžící 0 5m
rook-ceph-mon0-jflt5 1/1 Běžící 0 6m
rook-ceph-mon1-wkc8p 1/1 Běžící 0 6m
rook-ceph-mon2-p31dj 1/1 Běžící 0 6m
rook-ceph-osd-0h6nb 1/1 Běžící 0 5mUpgrade klastry Rook (na novou verzi) je postup, který v současné době vyžaduje postupnou aktualizaci všech jeho komponent ve stanoveném pořadí, a začít ji lze pouze poté, co se ujistíte, že aktuální instalace Rook je zcela „zdravá“. Podrobný návod krok za krokem na příkladu aktualizace verze Rook z 0.5.0 na 0.5.1 naleznete v .
V listopadu loňského roku byl na blogu Rook porovnání výkonu s EBS. Jeho výsledky stojí za pozornost, a pokud to shrneme velmi stručně, jsou následující:


Vyhlídky
Aktuální stav Rook je alpha a posledním významným vydáním v současnosti je , vydaná v listopadu 2017 (aktuální oprava — — byla vydána 14. prosince). Již v první polovině roku 2018 se očekávají vydání zralějších verzí: beta a stabilní (oficiálně připravené k použití v produkci).
Podle projektu, mají vývojáři podrobné vidění vývoje Rook alespoň ve dvou nejbližších vydáních: 0.7 (její připravenost v GitHub trackeru na 60 %) a 0.8. Mezi očekávané změny patří převedení podpory Ceph Block a Ceph Object do beta verze, dynamické provisioning objemů pro CephFS, vyvinutý systém logování, automatizované aktualizace clusteru, podpora snapshotů pro objemy.
Zařazení Rook mezi (zatím na samém počátku – „inception-level“, – spolu s a ) je zvláštní zárukou rostoucího zájmu o produkt. Jak dlouho se v oblasti cloudových aplikací usadí, bude jasnější po vydání stabilních verzí, které určitě přivedou Rook nové „testery“ a uživatele.
P.S.
Přečtěte si také náš blog:
- «»;
- «»;
- «»;
- «»;
- «».
Zdroj: habr.com
