Rook – "iseeneeserivĂ”imeline" andmesalvestus Kubernetes'e jaoks

Rook – "iseeneeserivĂ”imeline" andmesalvestus Kubernetes'e jaoks

29. jaanuaril vĂ”ttis CNCF (Cloud Native Computing Foundation), mis vastutab Kubernetes'e, Prometheuse ja teiste avatud lĂ€htekoodiga toodete eest, teatas vastu projekti Rook , mis on suurepĂ€rane vĂ”imalus tutvuda selle "jaotatud andmete salvestamise sĂŒsteemide orkestreerijaga Kubernetes'e sees" lĂ€hemalt.

Mis on Rook?

Rook — see on Go keeles kirjutatud tarkvara (levitatakse avatud litsentsiga Apache License 2.0), mis on mĂ”eldud andmesalvestuse automatiseerimiseks, et muuta need isehaldjateks, iseskaalautuvateks ja iseenesest taastuvateks. Rook automatiseerib (Kubernetes'e keskkonnas rakendatavate andmehoidlate jaoks): juurutamise, bootstrapping, konfiguratsiooni, varustamise, skaaleerimise, vĂ€rskendused, migreerimise, tĂ”rke taastamise, jĂ€lgimise ja ressursside haldamise.

Projekt on alfa-etapis ja spetsialiseerub jaotatud andmesalvestuse sĂŒsteemi Ceph orkestreerimisele Kubernetes'e klastrites. Autorid kinnitavad ka plaanide olemasolu toetada teisi salvestussĂŒsteeme, kuid see ei juhtu lĂ€hitulevikus.

Komponendid ja tehniline seadistus

Rook'i toimimise pÔhialuseks Kubernetes'e sees on spetsiaalne operaator (me rÀÀkisime Kubernetes'e operaatoritest selles artiklis), mis automatiseerib salvestuse konfiguratsiooni ja teostab selle jÀlgimist.

Nii, Rook'i operaator esindab konteinerit, mis sisaldab kĂ”iki vajalikke komponente salvestuse juurutamiseks ja edasiste hooldustööde teostamiseks. Operaatori ĂŒlesannete hulka kuuluvad:

  • Ceph'i salvestusdeemonite DaemonSet'i loomine (ceph-osd) lihtsa RADOS klastriga;
  • Ceph'i jĂ€lgimise podide loomine (mille ceph-mon, mis kontrollib klastri seisundit; enamasti juurutatakse kolm eksemplari kvoorumi tagamiseks ning kui ĂŒks neist ebaĂ”nnestub, tĂ”stetakse uus ĂŒles);
  • CRD-de (Kohandatud Ressursi MÀÀratlused) haldamine klastri, salvestuspartii, objektide salvestamine (ressursside ja teenuste kogum HTTP-pĂ€ringute teenindamiseks, tehes PUT/GET toiminguid objektide jaoks — need on ĂŒhilduvad S3 ja Swift API-ga), samuti failisĂŒsteemide;
  • podide initsialiseerimine kĂ”igi vajalike teenuste kĂ€ivitamiseks;
  • Rook'i agentide loomine.

Rook'i agendid esindavad eraldi pode, mis juurutatakse igas Kubernetes'e sĂ”lmes. Agendi eesmĂ€rk on pluginat konfigureerida FlexVolume, mis tagab salvestusmahtude toetust Kubernetesis. Agent teostab salvestuse haldust: ĂŒhendab jaotustugevdajad, monteerib mahud, vormindab failisĂŒsteemi jne.

Rook – "iseeneeserivĂ”imeline" andmesalvestus Kubernetes'e jaoks
Rooki komponentide koht ja roll Kubernetes klastris

Rook pakub kolme tĂŒĂŒpi salvestusi:

  1. blokeeritud (Block, StorageClass) — monteerib salvestuse ĂŒhele podile;
  2. objekti (Object, ObjectStore) — saadaval klastris ja vĂ€ljas (kasutades S3 API-d);
  3. jagatud failisĂŒsteem (Shared File System, Filesystem) — failisĂŒsteem, mida saab lugeda ja kirjutada paljude podide kaudu.

Rooki siseseade sisaldab jÀrgmist:

  • Mons — podid Ceph-i jĂ€lgimiseks (eelnevalt mainitud ceph-mon);
  • OSDs — podid, kus töötavad deemonid ceph-osd (Objekti Salvestuse Deemonid);
  • MGR — podid deemoniga ceph-mgr (Ceph Manager), mis pakub tĂ€iendavaid jĂ€lgimisvĂ”imalusi ja liideseid vĂ€listele sĂŒsteemidele (monitooringu/haldamise jaoks);
  • RGW (valikuline) — podid objekti salvestamiseks;
  • MDS (valikuline) — podid jagatud failisĂŒsteemiga.

Rook – "iseeneeserivĂ”imeline" andmesalvestus Kubernetes'e jaoks

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

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

Rooki haldamine

Rooki operaator toetab tĂ€ies ulatuses Kubernetes versiooni 1.6 ja uuemaid (ja osaliselt vanemat K8s versiooni — 1.5.2). Selle paigaldamine ja lihtsaim stsenaarium nĂ€eb vĂ€lja nagu:

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

Lisaks on Rooki operaatori jaoks valmistatud Helm chart, mis vÔimaldab paigaldamist ka niimoodi:

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 RBAC, kui seda vĂ”imalust teie klastris ei kasutata), mis edastatakse helm install kaudu parameetrina --set key=value[,key=value] (vĂ”i salvestatakse eraldi YAML-faili ja edastatakse -f values.yaml PĂ€rast Rooki operaatori paigaldamist ja podide kĂ€ivitamist tema agentidega tuleb luua ise Rooki klaster, mille lihtsaim konfiguratsioon nĂ€eb vĂ€lja jĂ€rgmiselt ().

rook-cluster.yamlapiVersion: 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):

: erilisele tÀhelepanu tuleks pöörata atribuudile

MĂ€rkus. dataDirHostPath, mille vajalik vÀÀrtus klastris sĂ€ilitamiseks pĂ€rast taaskĂ€ivitusi. Kui Rook'i kasutatakse pĂŒsiva andmete salvestamise kohana Kubernetes'i hostides, soovitavad autorid, et selles kataloogis oleks vĂ€hemalt 5 GB vaba kettaruumi.

JÀÀb ĂŒle luua klaster konfiguratsioonist ja veenduda, et pod'id on klastris loodud (nimetuste ruumis 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

Upgrade Rook'i klastri uuendamise protseduur (enne uut versiooni) on see, et praegusel hetkel nĂ”uab see kĂ”igi selle komponentide jĂ€rkjĂ€rgulist uuendamist kindlas jĂ€rjekorras, ning seda saab alustada ainult siis, kui olete veendunud, et praegune Rook'i installatsioon on tĂ€iesti "terve". Üksikasjalikku samm-sammult juhendit Rook versiooni 0.5.0 uuendamiseks versiooniks 0.5.1 leiate projekti dokumentatsioonis.

Eelmise aasta novembris Rook'i blogis avaldati vĂ”rdlus tĂ”hususest EBS-iga. Selle tulemused vÀÀrivad tĂ€helepanu ja lĂŒhidalt öeldes on need jĂ€rgmised:

Rook – "iseeneeserivĂ”imeline" andmesalvestus Kubernetes'e jaoks
Rook – "iseeneeserivĂ”imeline" andmesalvestus Kubernetes'e jaoks

Prospects

Rook'i praegune olek on alpha ja viimane suur vĂ€ljaanne siiani on versioon 0.6, mis ilmus novembris 2017 (aktiivne parandamine — v0.6.2 — ilmus 14. detsembril). Juba 2018. aasta esimeses pooles oodatakse vĂ€ljaandeid kĂŒpsemate versioonide kohta: beetaversioonid ja stabiilne (ametlikult tootmiseks kasutamiseks valmis).

Vastavalt roadmap projekti, arendajatel on pĂ”hjalik visioon Rook'i arendamiseks vĂ€hemalt kahe jĂ€rgmise vĂ€ljaande jooksul: 0.7 (valmidus GitHub'i jĂ€lgijas hinnatakse 60% ulatuses) ja 0.8. Oodatud muudatuste hulka kuulub toimetuse Ceph Block ja Ceph Object toetuse ĂŒleviimine beetaversiooniks, dinamiiline mahutite provisionimine CephFS'i jaoks, arenenud logimise sĂŒsteem, automatiseeritud klastrite uuendamine, kuvatĂ”mmiste toimetamine mahtude jaoks.

Rook'i vastuvĂ”tmine CNCF projektide hulka (kuni praeguseni on see algusjĂ€rgus — "inception-level", — koos linkerd ja CoreDNS) on ainus seekordne garantii, et toote vastu kasvav huvi. Kui hĂ€sti see pilve rakenduste maailmas pĂŒsib, selgub pĂ€rast stabiilsete versioonide ilmumist, mis toovad kindlasti Rooki juurde uusi „katsetajaid” ja kasutajaid.

P.S.

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster