Rook - një dyqan të dhënash vetë-shërbimi për Kubernetes

Rook - një dyqan të dhënash vetë-shërbimi për Kubernetes

Më 29 janar, komiteti teknik i CNCF (Cloud Native Computing Foundation), organizata që qëndron pas Kubernetes, Prometheus dhe produkteve të tjera me burim të hapur nga bota e kontejnerëve dhe vendasve të cloud, i shpallur për pranimin e projektit sorrë në radhët e tyre. Një mundësi e shkëlqyer për t'u njohur me këtë "orkestrator të ruajtjes së shpërndarë në Kubernetes".

ÇfarĂ« lloj Rook?

sorrë është softuer i shkruar në Go (shperndare nga nën licencën falas Apache 2.0), i projektuar për të ofruar depo të dhënash me funksione të automatizuara që i bëjnë ato vetë-menaxhimi, vetë-shkallëzimi dhe vetë-shërimi. Për ta bërë këtë, Rook automatizon (për dyqanet e të dhënave të përdorura në një mjedis Kubernetes): vendosjen, bootstrapping, konfigurimin, sigurimin, shkallëzimin, përditësimet, migrimet, rikuperimin nga fatkeqësitë, monitorimin dhe menaxhimin e burimeve.

Projekti është në fazën alfa dhe është i specializuar në orkestrimin e sistemit të ruajtjes së shpërndarë Ceph në grupimet Kubernetes. Autorët njoftojnë gjithashtu planet për të mbështetur sisteme të tjera të ruajtjes, por kjo nuk do të ndodhë në versionet e ardhshme.

Komponentët dhe pajisjet teknike

Puna e Rook brenda Kubernetes bazohet në një operator të veçantë (ne kemi shkruar më shumë rreth Operatorëve Kubernetes në Ky artikull), i cili automatizon konfigurimin e ruajtjes dhe zbaton monitorimin e tij.

Pra, Operator Rook duket të jetë një kontejner që përmban gjithçka të nevojshme për vendosjen dhe mirëmbajtjen e mëvonshme të depove. Përgjegjësitë e operatorit përfshijnë:

  • duke krijuar njĂ« DaemonSet pĂ«r demonĂ«t e ruajtjes sĂ« Ceph (ceph-osd) me njĂ« grup tĂ« thjeshtĂ« RADOS;
  • krijimi i pods pĂ«r monitorimin e Ceph (nga ceph-mon, duke kontrolluar statusin e grupit; pĂ«r kuorum, nĂ« shumicĂ«n e rasteve shpĂ«rndahen tre kopje, dhe nĂ«se ndonjĂ«ra prej tyre bie, ngrihet njĂ« e re);
  • menaxhimi i CRD-ve (PĂ«rkufizime tĂ« personalizuara tĂ« burimeve) pĂ«r veten e tij grumbull, pishina magazinimi, dyqane objektesh (Grupe burimesh dhe shĂ«rbimesh pĂ«r shĂ«rbimin e kĂ«rkesave HTTP qĂ« kryejnĂ« PUT/GET nĂ« objekte - ato janĂ« tĂ« pajtueshme me S3 dhe Swift API)Dhe sistemet e skedarĂ«ve;
  • inicializimi i pods pĂ«r tĂ« nisur tĂ« gjitha shĂ«rbimet e nevojshme;
  • krijimi i agjentĂ«ve tĂ« Rook.

Agjentët e Rook përfaqësohen nga pods të veçanta që janë vendosur në secilën nyje Kubernetes. Qëllimi i agjentit është konfigurimi i shtojcave FlexVolume, i cili ofron mbështetje për vëllimet e ruajtjes në Kubernetes. Agjenti zbaton funksionimin e ruajtjes: lidh pajisjet e ruajtjes së rrjetit, monton vëllime, formaton sistemin e skedarëve, etj.

Rook - një dyqan të dhënash vetë-shërbimi për Kubernetes
Vendi dhe roli i komponentëve Rook në skemën e përgjithshme të grupimit Kubernetes

Rook ofron tre lloje të ruajtjes:

  1. bllokoj (Bllok, StorageClass) — monton magazinimin nĂ« njĂ« vatĂ«r tĂ« vetme;
  2. Objekt (Objekt, ObjectStore) - disponohet brenda dhe jashtë grupit Kubernetes (nëpërmjet S3 API);
  3. sistemi i skedarëve të përbashkët (Sistemi i skedarëve të përbashkët, Filesystem) është një sistem skedari që mund të montohet për lexim dhe shkrim nga pods të shumta.

Pjesët e brendshme të Rook përfshijnë:

  • Mons — pods pĂ«r monitorimin e Ceph (me ceph-monin e pĂ«rmendur tashmĂ«);
  • OSD - pods me daemon ceph-osd (Object Storage Daemons);
  • M.G.R. - bishtaja me njĂ« demon ceph-mgr (Ceph Manager), i cili ofron aftĂ«si shtesĂ« monitorimi dhe ndĂ«rfaqe pĂ«r sistemet e jashtme (monitorim/kontroll);
  • RGW (Fakultative) - bishtaja me ruajtje objektesh;
  • MDS (Fakultative) - pods me sistemin e skedarĂ«ve tĂ« pĂ«rbashkĂ«t.

Rook - një dyqan të dhënash vetë-shërbimi për Kubernetes

Të gjithë demonët e Rook (Mons, OSD, MGR, RGW, MDS) janë përpiluar në një binar të vetëm (rook) që rrjedh në një enë.

Për një hyrje të shkurtër të projektit Rook, ky i shkurtër (12 rrëshqitje) mund të jetë gjithashtu i dobishëm. prezantimi nga Bassam Tabbara (CTO në Quantum Corp).

Operimi i Rook

Operatori Rook mbĂ«shtet plotĂ«sisht Kubernetes versionin 1.6 dhe mĂ« tĂ« lartĂ« (dhe, pjesĂ«risht, lĂ«shimi mĂ« i vjetĂ«r i K8 - 1.5.2). E tij instalimi ĐČ skenari mĂ« i thjeshtĂ« duket kĂ«shtu:

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

Përveç kësaj, operatori Rook është i përgatitur Tabela e helmetit, falë të cilit instalimi mund të kryhet si kjo:

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

Sasi e vogël në dispozicion opsionet e konfigurimit (për shembull, mund të çaktivizoni mbështetjen RBAC, nëse kjo veçori nuk përdoret në grupin tuaj), të cilat kalohen te helm install nëpërmjet parametrit --set key=value[,key=value] (ose ruajeni në një skedar të veçantë YAML dhe transmetojeni nëpërmjet -f values.yaml).

Pas instalimit të operatorit Rook dhe lëshimit të pods me agjentët e tij, gjithçka që mbetet është të krijohet vetë grupi Rook, konfigurimi më i thjeshtë i të cilit duket si ky (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

ShĂ«nim: vĂ«mendje e veçantĂ« duhet t'i kushtohet atributit dataDirHostPath, vlera e saktĂ« e sĂ« cilĂ«s Ă«shtĂ« e nevojshme pĂ«r tĂ« ruajtur grupin pas rindezjes. PĂ«r rastet kur pĂ«rdoret si njĂ« vend ruajtjeje tĂ« pĂ«rhershme pĂ«r tĂ« dhĂ«nat e Rook nĂ« hostet e Kubernetes, autorĂ«t rekomandojnĂ« tĂ« keni tĂ« paktĂ«n 5 GB hapĂ«sirĂ« ​​tĂ« lirĂ« nĂ« disk nĂ« kĂ«tĂ« direktori.

Gjithçka që mbetet është që në fakt të krijohet grupi nga konfigurimi dhe të sigurohemi që pods janë krijuar në grup (në hapësirën e emrave 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

Përmirëso Grupi Rook (deri në një version të ri) është një procedurë që në këtë fazë kërkon përditësimin vijues të të gjithë përbërësve të tij në një sekuencë të caktuar dhe mund ta filloni atë vetëm pasi të jeni siguruar që instalimi aktual i Rook është plotësisht "i shëndetshëm". shteti. Udhëzime të hollësishme hap pas hapi duke përdorur shembullin e përditësimit të versionit të Rook 0.5.0 në 0.5.1 mund të gjenden në dokumentacionin e projektit.

Nëntorin e kaluar në blogun Rook u botua krahasim produktiviteti me EBS. Rezultatet e tij meritojnë vëmendje, dhe shkurtimisht, ato janë si më poshtë:

Rook - një dyqan të dhënash vetë-shërbimi për Kubernetes
Rook - një dyqan të dhënash vetë-shërbimi për Kubernetes

Perspektivat

Statusi aktual i Rook Ă«shtĂ« alfa, dhe versioni mĂ« i fundit i madh deri mĂ« tani Ă«shtĂ« versioni 0.6, lĂ«shuar nĂ« nĂ«ntor 2017 (korrigjimi aktual - v0.6.2 — doli mĂ« 14 dhjetor). TashmĂ« nĂ« gjysmĂ«n e parĂ« tĂ« 2018, priten lĂ«shimet e versioneve mĂ« tĂ« pjekura: beta dhe tĂ« qĂ«ndrueshme (zyrtarisht gati pĂ«r pĂ«rdorim nĂ« prodhim).

Sipas udhërrëfyesi projekti, zhvilluesit kanë një vizion të detajuar për zhvillimin e Rook në të paktën dy lëshimet e ardhshme: 0.7 (gatishmëria e tij është në gjurmuesin GitHub vlerësuar si 60%) dhe 0.8. Ndër ndryshimet e pritshme janë transferimi i mbështetjes për Ceph Block dhe Ceph Object në statusin e versionit beta, sigurimi dinamik i vëllimeve për CephFS, një sistem i avancuar i regjistrimit, përditësimet e automatizuara të grupimeve, mbështetje për fotografitë e çastit për vëllime.

Duke marrë Rook në numër Projektet CNCF (deri më tani në fazën shumë të hershme - "niveli fillestar" - në të njëjtin nivel me lidhës О CoreDNS) është një lloj garancie për rritjen e interesit për produktin. Mënyra se si do të fitojë një terren në botën e aplikacioneve cloud do të bëhet më e qartë pasi të lëshohen versionet e qëndrueshme, të cilat sigurisht do të sjellin testues dhe përdorues të rinj në Rook.

PS

Lexoni edhe në blogun tonë:

Burimi: www.habr.com

Bleni njĂ« host tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, serverĂ« VPS VDS đŸ”„ Bleni hosting tĂ« besueshĂ«m tĂ« faqeve tĂ« internetit me mbrojtje DDoS, servera VPS VDS | ProHoster