Rook — „isehaldav“ andmehĂ€lli lahendus Kubernetesile

Rook — „isehaldav“ andmehĂ€lli lahendus Kubernetesile

29. jaanuaril teatas CNCF (Cloud Native Computing Foundation), mis on Kubernetes, Prometheuse ja teiste konteinerite ja cloud native'i avatud lÀhtekoodiga toodete loomise organisatsioon, kuulutas projekti vastuvÔtmisest Rook oma ridadesse. SuurepÀrane pÔhjus tutvuda lÀhemalt selle 'jaotatud andmehoidlate orkestri' vÔimalustega Kuberneteses.

Mis on Rook?

Rook — see on Go keeles kirjutatud tarkvara (GNU Üldine Avaliku litsentsi alusel. avatud litsentsi Apache License 2.0 alusel), mis on mĂ”eldud andmehoidlate varustamiseks automatiseeritud funktsioonidega, mis muudavad need isejuhtivateks, isemÔÔtmisvĂ”imeliseks ja eneseparandavateks.Selleks automatiseerib Rook (andmehoidlate jaoks, mida kasutatakse Kuberneteses): juurutamise, bootstrappingu, seadistamise, provisioningu, skaleerimise, uuendused, migratsioonid, tĂ”rke taastamine, jĂ€lgimine ja ressursside haldamine.

Projekt on alfaetapis ja spetsialiseerub Cephi jaotatud andmehoidla orkestreerimisele Kubernetes'e klastrites. Autorid teatavad ka plaanidest toetada teisi andmehoidla sĂŒsteeme, kuid see ei toimu lĂ€hitulevikus.

Koostisosad ja tehniline struktuur

Rook'i töö aluseks Kubernetes'is on spetsiaalne operaator (Kubernetes'i operaatoritest oleme rohkem kirjutanud selles artiklis), automatiseerides salvestuskonfiguratsiooni ja teostades selle jÀlgimist.

Nii et, Rook'i operaator esindab konteinerit, mis sisaldab kÔike vajalikku salvestuse juurutamiseks ja edaspidiseks hoolduseks. Operaatori kohustuste hulka kuulub:

  • DaemonSet'i loomine Ceph'i salvestusdeemoneid jaoks (ceph-osd) lihtsa RADOS klastri jaoks;
  • Ceph'i jĂ€lgimise pod'ide loomine (koos ceph-mon, mis kontrollivad klastri seisukorda; enamikul juhtudel juurutatakse kolm eksemplari kvoorumi tagamiseks, ning kui ĂŒks neist ebaĂ”nnestub, tĂ”stetakse uus ĂŒles);
  • CRD'de haldamine (Custom Resource Definitions) klastrile endale salvestuspoolsed, objektide salvestamine, (ressursside ja teenuste kogum, mis teenindavad HTTP-pĂ€ringuid, tehes PUT/GET tegevusi objektide jaoks, — nad on S3 ja Swift API-ga ĂŒhilduvad) failisĂŒsteemid, samuti pod'ide initsialiseerimine, et kĂ€ivitada kĂ”ik vajalikud teenused;;
  • Rook'i agentide loomine.
  • Rook'i agendid

esindavad eraldi pod'e, mis juurutatakse igas Kubernetes'i sĂ”lmes. Agendi eesmĂ€rk on plugina konfiguratsioon FlexVolume FlexVolume, tagab toetuse hoidlate mahtude jaoks Kubernetesis. Agent haldab salvestust: ĂŒhendab salvestusseadmed, kinnitab mahtusid, vormindab failisĂŒsteemi jne.

Rook — „isehaldav“ andmehĂ€lli lahendus Kubernetesile
Rooki komponentide asukoht ja roll Kubernetes klastrite ĂŒldskeemis

Rook pakub kolme tĂŒĂŒpi salvestusi:

  1. plokk (Block, StorageClass) — kinnitab salvestust ĂŒhe podiga;
  2. objekt (Object, ObjectStore) — on saadaval klastris ja vĂ€ljaspool Kubernetesit (S3 API kaudu);
  3. jagatud FS (Shared File System, FailisĂŒsteem) — failisĂŒsteem, mida saab kirjutamiseks ja lugemiseks kinnitada mitmest podist.

Rooki siseseade sisaldab:

  • Mons — Cephi jĂ€lgimise podid (varem mainitud ceph-mon);
  • OSDsd — podid ceph-osd (objektide salvestamise deemonite) jaoks;
  • MGR — podid deemoniga ceph-mgr (Ceph Manager), mis pakub tĂ€iendavaid jĂ€lgimisvĂ”imalusi ja liideseid vĂ€listesse sĂŒsteemidesse (jĂ€lgimine/haldamine);
  • RGW (valikuline) — podid objektide salvestamiseks;
  • MDS (valikuline) — podid jagatud FS-iga.

Rook — „isehaldav“ andmehĂ€lli lahendus Kubernetesile

KĂ”ik Rooki deemonid (Mons, OSDsd, MGR, RGW, MDS) on kompileeritud ĂŒhte binaari (rook), mis kĂ€ivitatakse konteineris.

Rooki projekti lĂŒhikese ĂŒlevaate jaoks vĂ”ib olla kasulik ka see vĂ€ike (12 slaidi) esitlus Bassam Tabbara (Quantum Corp CTO) esitlus.

Rooki haldamine

Rook operaator toetab tĂ€ielikult Kubernetes versioone 1.6 ja kĂ”rgemad (ja osaliselt vanemat K8s versiooni — 1.5.2). Tema paigaldamine ĂŒhes lihtsamal stsenaariumil nĂ€eb vĂ€lja nii:

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

Lisaks on Rook operaatori jaoks ette valmistatud Helm diagramm, mistÔttu saab paigaldust teostada ka jÀrgmiselt:

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

On olemas vĂ€ike hulk seadistamisvalikuid (nĂ€iteks saab vĂ€lja lĂŒlitada toe RBAC, kui seda funktsiooni teie klastris ei kasutata), mis edastatakse helm install kaudu parameetri --set key=value[,key=value] (vĂ”i hoida eraldi YAML-failis ja edastada — kaudu -f values.yaml).

PÀrast Rook operaatori paigaldamist ja teemade kÀivitamist jÀÀb jÀrele luua Rook klaster, mille lihtne konfiguratsioon nÀeb vÀlja jÀrgmiselt (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

MĂ€rkus: erilisele tĂ€helepanu tuleks pöörata attribuudile dataDirHostPath, mille, mis on vajalik klastrite sĂ€ilitamiseks pĂ€rast taaskĂ€ivitusi. Kui kasutatakse kui pĂŒsivat andmete salvestamise kohta, soovitavad Rook-i autorid, et sellel kataloogil oleks vĂ€hemalt 5 GB vaba kettaruumi.

JÀÀb vaid luua klaster konfiguratsioonist ja veenduda, et podid on klastrisse loodud (nimetatud ruumis rook):

kubectl create -f rook-cluster.yaml
kubectl -n rook get pod
NIME                               VALMIS   OLEK     TAASKÄIVITUSED AGE
rook-api-1511082791-7qs0m         1/1      Jookseb   0          5m
rook-ceph-mgr0-1279756402-wc4vt   1/1      Jookseb   0          5m
rook-ceph-mon0-jflt5              1/1      Jookseb   0          6m
rook-ceph-mon1-wkc8p              1/1      Jookseb   0          6m
rook-ceph-mon2-p31dj              1/1      Jookseb   0          6m
rook-ceph-osd-0h6nb               1/1      Jookseb   0          5m

Uuendus Rook klastrite (enne uut versiooni) uuendamise protseduur on selline, et see nĂ”uab kĂ”igi komponentide jĂ€rkjĂ€rgulist uuendamist kindlas jĂ€rjekorras, alustades seda saab teha ĂŒksnes pĂ€rast seda, kui olete veendunud Rooki praeguses tĂ€ielikult "terves" olekus. Üksikasjaliku samm-sammulise juhise leidmiseks, mis kĂ€sitleb Rook'i versiooni 0.5.0 uuendamist versioonile 0.5.1, vaadake projekti dokumentatsioonist.

Eelmise aasta novembris Rooki blogis oli avaldatud vĂ”rdlus praegune EBS-iga. Selle tulemused on tĂ€helepanuvÀÀrsed ja kui lĂŒhidalt kokku vĂ”tta, siis need on jĂ€rgmised:

Rook — „isehaldav“ andmehĂ€lli lahendus Kubernetesile
Rook — „isehaldav“ andmehĂ€lli lahendus Kubernetesile

Perspektiivid

Rooki praegune staatus on alpha, ning viimane suur vĂ€ljaanne kuni tĂ€naseni on versioon 0.6, mis ilmus novembris 2017 (ajakohane parandamine — v0.6.2 — ilmus 14. detsembril). Juba 2018. aasta esimeses pooles oodatakse kĂŒpsemaid versioone: beetaversioone ja stabiilset (ametlikult tootmises kasutamiseks valmis).

Vastavalt teekaardil projekti jaoks on arendajatel selge nĂ€gemus Rooki arendamisest vĂ€hemalt kahel jĂ€rgmisel vĂ€ljaandel: 0.7 (selle valmidus GitHubi jĂ€lgijas hindatakse 60% ulatuses) ja 0.8. Oodatud muudatuste seas — Ceph Blocki ja Ceph Objecti toe ĂŒleviimine beetaversiooniks, CephFS jaoks dĂŒnaamiline mahtude pakkumine, arenenud logimise sĂŒsteem, automatiseeritud klastri uuendused, mahtude jaoks kuvatĂ”mmiste tugi.

Rooki vastuvĂ”tmine CNCF projektide hulka (praegu kĂ”ige varasemas etapis — 'inception-level', — koos linkerd ja CoreDNS) on tĂ”eliselt usaldusvÀÀrne mĂ€rk kasvavast huvist toote vastu. Kuidas see end pilvetoetustes kinnitab, selgub paremini stabiilsete versioonide ilmumisel, mis toovad Rookile kindlasti uusi „katsetajaid” ja kasutajaid.

P.S.

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster