Rook – Kubernetese iseteeninduslik andmepood

Rook – Kubernetese iseteeninduslik andmepood

29. jaanuaril osales Kubernetese, Prometheuse ja teiste konteinerite ja pilvepõhise maailma avatud lähtekoodiga toodete taga oleva organisatsiooni CNCF (Cloud Native Computing Foundation) tehniline komitee teatas projekti vastuvõtmise kohta vanker nende ridadesse. Suurepärane võimalus tutvuda selle "jaotatud salvestusruumi orkestraatoriga Kubernetesis".

Milline vanker?

vanker kas tarkvara on kirjutatud Go (jaotatud tasuta Apache litsentsi 2.0 alusel), mis on loodud andmeladude varustamiseks automatiseeritud funktsioonidega, mis muudavad need isejuhtimine, ise skaleeruv ja isetervenemine. Selleks automatiseerib Rook (Kubernetese keskkonnas kasutatavate andmehoidlate jaoks): juurutamine, alglaadimine, konfigureerimine, varustamine, skaleerimine, värskendused, migratsioonid, avariitaaste, monitooring ja ressursside haldamine.

Projekt on alfafaasis ja on spetsialiseerunud Cephi hajutatud salvestussüsteemi orkestreerimisele Kubernetese klastrites. Autorid teatavad ka plaanidest toetada teisi salvestussüsteeme, kuid seda järgmistes väljaannetes ei juhtu.

Komponendid ja tehniline seade

Rooki töö Kubernetese sees põhineb spetsiaalsel operaatoril (Kubernetese operaatorite kohta kirjutasime lähemalt aastal see artikkel), mis automatiseerib salvestuse konfiguratsiooni ja rakendab selle jälgimist.

Niisiis, Vankri operaator näib olevat konteiner, mis sisaldab kõike, mis on vajalik hoidla juurutamiseks ja hilisemaks hoolduseks. Operaatori kohustuste hulka kuuluvad:

  • DaemonSeti loomine Cephi salvestusdeemonite jaoks (ceph-osd) lihtsa RADOS-klastriga;
  • kaunade loomine Ceph seire jaoks (alates ceph-mon, klastri oleku kontrollimine; kvoorumi jaoks kasutatakse enamikul juhtudel kolm eksemplari ja kui mõni neist langeb, tõuseb uus);
  • CRD-de haldamine (Kohandatud ressursi määratlused) enda jaoks klaster, hoiubasseinid, objektikauplused (ressursside ja teenuste komplektid HTTP-päringute teenindamiseks, mis täidavad objektidel PUT/GET-i – need ühilduvad S3 ja Swift API-ga) ning failisüsteemid;
  • kaunade lähtestamine kõigi vajalike teenuste käivitamiseks;
  • Rooki agentide loomine.

Rooki agendid on esindatud eraldi kaustadega, mis on juurutatud igas Kubernetese sõlmes. Agendi eesmärk on pistikprogrammi konfigureerimine FlexVolume, mis pakub Kubernetese salvestusmahtude tuge. Agent rakendab salvestusruumi toimimist: ühendab võrgusalvestusseadmed, ühendab köited, vormindab failisüsteemi jne.

Rook – Kubernetese iseteeninduslik andmepood
Vankri komponentide koht ja roll Kubernetese klastri üldises skeemis

Rook pakub kolme tüüpi salvestusruumi:

  1. blokk (Blokeerima, StorageClass) — monteerib hoidla ühele koldele;
  2. objektiks (objekt, ObjectStore) - saadaval Kubernetese klastris ja väljaspool seda (S3 API kaudu);
  3. jagatud failisüsteem (Jagatud failisüsteem, Filesystem) on failisüsteem, mida saab paigaldada mitmest kaustast lugemiseks ja kirjutamiseks.

Vankri sisemised osad hõlmavad järgmist:

  • Mons — kaunad Ceph seireks (koos juba mainitud tseph-moniga);
  • OSD-d — kaunad ceph-osd deemonitega (Object Storage Deemons);
  • M.G.R. - kaunad deemoniga ceph-mgr (Ceph Manager), mis pakub täiendavaid jälgimisvõimalusi ja liideseid välistele süsteemidele (seire/juhtimine);
  • RGW (valikuline) - kaunad koos esemehoiuga;
  • MDS (valikuline) - jagatud failisüsteemiga kaunad.

Rook – Kubernetese iseteeninduslik andmepood

Kõik Rooki deemonid (Mons, OSD, MGR, RGW, MDS) kompileeritakse üheks binaarfailiks (rook) töötab konteineris.

See lühike (12 slaidi) võib olla kasulik ka projekti Rook lühitutvustuseks. esitlus Bassam Tabbaralt (Quantum Corpi tehnoloogiadirektor).

Vankri opereerimine

Rooki operaator toetab täielikult Kubernetese versiooni 1.6 ja uuemat (ja osaliselt ka vanema K8 väljalase – 1.5.2). Tema paigaldus в lihtsaim stsenaarium näeb välja selline:

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

Lisaks on ette valmistatud Rook operaator Helmi diagramm, tänu millele saab paigaldust läbi viia järgmiselt:

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

Saadaval väike kogus seadistusvalikud (näiteks saate toe keelata RBAC, kui seda funktsiooni teie klastris ei kasutata), mis edastatakse helm install parameetri kaudu --set key=value[,key=value] (või salvestage eraldi YAML-failis ja edastage selle kaudu -f values.yaml).

Pärast Rooki operaatori installimist ja podide käivitamist selle agentidega, jääb üle vaid luua Rooki klaster ise, mille lihtsaim konfiguratsioon näeb välja selline (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: erilist tähelepanu tuleks pöörata atribuudile dataDirHostPath, mille õige väärtus on vajalik klastri salvestamiseks pärast taaskäivitamist. Juhtudel, kui seda kasutatakse Kubernetese hostide Rooki andmete alalise salvestuskohana, soovitavad autorid, et selles kataloogis oleks vähemalt 5 GB vaba kettaruumi.

Jääb üle vaid konfiguratsioonist klaster tegelikult luua ja veenduda, et kaunad loodi klastris (nimeruumis 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

Uuenda Rook cluster (kuni uue versioonini) on protseduur, mis nõuab selles etapis kõigi selle komponentide järjestikust värskendamist kindlas järjestuses ja saate seda käivitada alles pärast seda, kui olete veendunud, et praegune Rooki installimine on täiesti "terves" olek. Üksikasjalikud samm-sammult juhised Rooki versiooni 0.5.0 versiooni 0.5.1 värskendamise näitel leiate projekti dokumentatsioon.

Eelmise aasta novembris Rooki ajaveebis avaldati võrdlus tootlikkus EBS-iga. Selle tulemused väärivad tähelepanu ja lühidalt on need järgmised:

Rook – Kubernetese iseteeninduslik andmepood
Rook – Kubernetese iseteeninduslik andmepood

Väljavaated

Rooki praegune olek on alfa ja seni viimane suurem väljalase on 0.6 versioon, välja antud novembris 2017 (praegune parandus - v0.6.2 — ilmus 14. detsembril). Juba 2018. aasta esimesel poolel on oodata küpsemate versioonide väljalaseid: beeta ja stabiilne (ametlikult tootmises kasutamiseks valmis).

Vastavalt tegevuskava projekti, arendajatel on üksikasjalik nägemus Rooki arendamise kohta vähemalt kahes järgmises versioonis: 0.7 (selle valmidus on GitHubi jälgijas hinnatakse kui 60%) ja 0.8. Oodatavate muudatuste hulgas on Ceph Blocki ja Ceph Objecti toe ülekandmine beetaversiooni olekusse, CephFS-i köidete dünaamiline varustamine, täiustatud logimissüsteem, automatiseeritud klastri värskendused, köidete hetktõmmiste tugi.

Vankri võtmine numbrisse CNCF projektid (seni väga varajases staadiumis - "algtasemel" - samaväärselt linkerd и CoreDNS) on omamoodi garantii toote vastu kasvavale huvile. Kuidas see pilverakenduste maailmas kanda kinnitab, saab selgemaks pärast stabiilsete versioonide ilmumist, mis kindlasti toovad Rooki juurde uusi testijaid ja kasutajaid.

PS

Loe ka meie blogist:

Allikas: www.habr.com

Lisa kommentaar