Rook - samouslužno skladište podataka za Kubernetes

Rook - samouslužno skladište podataka za Kubernetes

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, najavljeno o prihvatanju projekta top u njihove redove. Odlična prilika da upoznate ovog „orkestratora distribuirane pohrane u Kubernetesu“.

Kakav top?

top je softver napisan u Go (distribuira 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 ovaj članak), 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 (ceph-osd) sa jednostavnim RADOS klasterom;
  • kreiranje podova za Ceph praćenje (od ceph-mon, 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 (Prilagođene definicije resursa) za sebe klastera, skladišne ​​bazene, prodavnice objekata (skupovi resursa i usluga za posluživanje HTTP zahtjeva koji izvode PUT/GET na objektima - kompatibilni su sa S3 i Swift API-jem)I sistem datoteka;
  • 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 FlexVolume, 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.

Rook - samouslužno skladište podataka za Kubernetes
Mjesto i uloga Rook komponenti u ukupnoj šemi Kubernetes klastera

Rook nudi tri vrste skladištenja:

  1. blok (Blok, StorageClass) — montira skladište na jedno ognjište;
  2. objekt (objekt, ObjectStore) - dostupno unutar i izvan Kubernetes klastera (preko S3 API-ja);
  3. zajednički fajl sistem (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-mgr (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.

Rook - samouslužno skladište podataka za Kubernetes

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. prezentacija 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 в najjednostavniji scenario izgleda ovako:

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

Osim toga, pripremljen je i Rook operator Helm chart, 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 opcije podešavanja (na primjer, možete onemogućiti podršku RBAC, 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: 1024

primjedba: 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          5m

Nadogradite 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 projektnu dokumentaciju.

Prošlog novembra na Rook blogu je objavljen poređenje produktivnost sa EBS-om. Njegovi rezultati su vrijedni pažnje, a ukratko su sljedeći:

Rook - samouslužno skladište podataka za Kubernetes
Rook - samouslužno skladište podataka za Kubernetes

Perspektive

Trenutni status Rooka je alfa, a posljednje veliko izdanje do danas je verzija 0.6, objavljeno u novembru 2017. (trenutna ispravka - v0.6.2 — 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 putokaz projekta, programeri imaju detaljnu viziju razvoja Rooka u najmanje sljedeća dva izdanja: 0.7 (njegova spremnost je u GitHub trackeru ocjenjuje se 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 CNCF projekti (do sada u vrlo ranoj fazi - "početnom nivou" - u rangu sa linkerd и CoreDNS) 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

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster