
Dana 29. januara, tehnički komitet CNCF-a (Cloud Native Computing Foundation), organizacije koja stoji iza Kubernetesa, Prometheusa i drugih Open Source proizvoda iz svijeta kontejnera i cloud native, o prihvatanju projekta top u njihove redove. Odlična prilika da upoznate ovog „orkestratora distribuirane pohrane u Kubernetesu“.
Kakav top?
je softver napisan u Go ( pod besplatnom Apache License 2.0), dizajniran da obezbedi skladišta podataka sa automatizovanim funkcijama koje ih čine samoupravljanje, samoskaliranje i samoizlječenje. Da bi to učinio, Rook automatizira (za skladišta podataka koja se koriste u Kubernetes okruženju): implementaciju, pokretanje, konfiguraciju, obezbjeđivanje, skaliranje, ažuriranja, migracije, oporavak od katastrofe, praćenje i upravljanje resursima.
Projekat je u alfa fazi i specijalizovan je za orkestriranje Ceph distribuiranog sistema skladištenja u Kubernetes klasterima. Autori takođe najavljuju planove za podršku drugim sistemima za skladištenje podataka, ali to se neće dogoditi u narednim izdanjima.
Komponente i tehnički uređaj
Rookov rad unutar Kubernetesa zasniva se na posebnom operatoru (više smo pisali o Kubernetes operaterima u ), koji automatizuje konfiguraciju skladištenja i implementira njeno praćenje.
Tako Top operater izgleda kao kontejner koji sadrži sve što je potrebno za implementaciju i naknadno održavanje spremišta. Odgovornosti operatera uključuju:
- kreiranje DaemonSet-a za Ceph demone za pohranu () sa jednostavnim RADOS klasterom;
- kreiranje podova za Ceph praćenje (od , provjera statusa klastera; za kvorum, u većini slučajeva se rasporede tri primjerka, a ako neki od njih padne, izlazi novi);
- upravljanje CRD-ovima () za sebe , , (skupovi resursa i usluga za posluživanje HTTP zahtjeva koji izvode PUT/GET na objektima - kompatibilni su sa S3 i Swift API-jem)I ;
- inicijalizacija podova za pokretanje svih potrebnih usluga;
- stvaranje Rook agenata.
Rookovi agenti su predstavljeni zasebnim podovima koji su raspoređeni na svakom Kubernetes čvoru. Svrha agenta je konfiguracija dodatka , koji pruža podršku za volumene skladištenja u Kubernetesu. Agent implementira rad skladišta: povezuje mrežne uređaje za skladištenje, montira volumene, formatira sistem datoteka itd.

Mjesto i uloga Rook komponenti u ukupnoj šemi Kubernetes klastera
Rook nudi tri vrste skladištenja:
- (Blok,
StorageClass) — montira skladište na jedno ognjište; - (objekt,
ObjectStore) - dostupno unutar i izvan Kubernetes klastera (preko S3 API-ja); - (Zajednički sistem datoteka,
Filesystem) je sistem datoteka koji se može montirati za čitanje i pisanje iz više podova.
Unutrašnjost Topa uključuje:
- mons — pods za Ceph monitoring (sa već spomenutim ceph-monom);
- OSD - podovi sa ceph-osd demonima (Object Storage Daemoni);
- M.G.R. - mahune sa demonom (Ceph Manager), koji pruža dodatne mogućnosti praćenja i interfejse za eksterne sisteme (nadgledanje/kontrola);
- RGW (opcionalno) - mahune sa skladištem predmeta;
- MDS (opcionalno) - podovi sa zajedničkim sistemom datoteka.

Svi Rook demoni (Mons, OSD, MGR, RGW, MDS) su kompajlirani u jednu binarnu datoteku (rook) radi u kontejneru.
Za kratak uvod u projekt Rook, ovaj kratki (12 slajdova) također može biti od koristi. od Bassam Tabbara (CTO u Quantum Corp).
Upravljanje topom
Operator Rook u potpunosti podržava Kubernetes verziju 1.6 i noviju (i, djelimično, starije izdanje K8s - 1.5.2). Njegov instalacija в izgleda ovako:
cd cluster/examples/kubernetes
kubectl create -f rook-operator.yaml
kubectl create -f rook-cluster.yamlOsim toga, pripremljen je i Rook operator , zahvaljujući čemu se instalacija može izvesti na sljedeći način:
helm repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook Mala količina dostupna (na primjer, možete onemogućiti podršku , ako se ova funkcija ne koristi u vašem klasteru), koji se prosljeđuju helm install preko parametra --set key=value[,key=value] (ili pohraniti u zasebnu YAML datoteku i prenijeti putem -f values.yaml).
Nakon instaliranja Rook operatora i pokretanja podova sa svojim agentima, ostaje samo da se kreira sam Rook klaster, čija najjednostavnija konfiguracija izgleda ovako (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: 1024primjedba: posebnu pažnju treba obratiti na atribut dataDirHostPath, čija je ispravna vrijednost neophodna da bi se klaster sačuvao nakon ponovnog pokretanja. Za slučajeve u kojima se koristi kao trajna lokacija za skladištenje Rook podataka na Kubernetes hostovima, autori preporučuju da imate najmanje 5 GB slobodnog prostora na disku u ovom direktoriju.
Sve što preostaje je kreirati klaster iz konfiguracije i osigurati da su podovi kreirani u klasteru (u imenskom 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 5mNadogradite Rook klaster (do nove verzije) je postupak koji u ovoj fazi zahtijeva sekvencijalno ažuriranje svih njegovih komponenti u određenom nizu, a možete ga pokrenuti tek nakon što se uvjerite da je trenutna Rook instalacija u potpuno "zdravom" stanju. stanje. Detaljne upute korak po korak koristeći primjer ažuriranja Rook verzije 0.5.0 na 0.5.1 možete pronaći u .
Prošlog novembra na Rook blogu poređenje produktivnost sa EBS-om. Njegovi rezultati su vrijedni pažnje, a ukratko su sljedeći:


Perspektive
Trenutni status Rooka je alfa, a posljednje veliko izdanje do danas je , objavljeno u novembru 2017. (trenutna ispravka - — izašao 14. decembra). Već u prvoj polovini 2018. očekuju se izdanja zrelijih verzija: beta i stabilna (zvanično spremna za upotrebu u proizvodnji).
Prema projekta, programeri imaju detaljnu viziju razvoja Rooka u najmanje sljedeća dva izdanja: 0.7 (njegova spremnost je u GitHub trackeru kao 60%) i 0.8. Među očekivanim promenama su prenos podrške za Ceph Block i Ceph Object na status beta verzije, dinamičko obezbeđivanje volumena za CephFS, napredni sistem evidentiranja, automatizovana ažuriranja klastera, podrška za snimke za volumene.
Odvođenje topa u broj (do sada u vrlo ranoj fazi - "početnom nivou" - u rangu sa и ) je svojevrsna garancija sve većeg interesovanja za proizvod. Kako će se učvrstiti u svijetu aplikacija u oblaku, bit će jasnije kada budu objavljene stabilne verzije, što će sigurno dovesti nove testere i korisnike u Rook.
PS
Pročitajte i na našem blogu:
- «»;
- «»;
- «»;
- «»;
- «".
izvor: www.habr.com
