Rook — depozita e dhĂ«nash "vetĂ«-shĂ«rbyese" pĂ«r Kubernetes

Rook — depozita e dhĂ«nash "vetĂ«-shĂ«rbyese" pĂ«r Kubernetes

Më 29 janar, komiteti teknik i organizatës CNCF (Cloud Native Computing Foundation), që mbështet Kubernetes, Prometheus dhe produkte të tjera Open Source nga bota e kontejnerëve dhe cloud native, njoftoi miratoi projektin Rook në radhët e tij. Një mundësi e shkëlqyer për të njohur më mirë këtë "orchestrator" të sistemeve të ruajtjes së dhënash distribuuar në Kubernetes.

ÇfarĂ« Ă«shtĂ« Rook?

Rook — Ă«shtĂ« njĂ« software i shkruar nĂ« Go (distribuohet sipĂ«r njĂ« license tĂ« lirĂ« Apache License 2.0), i cili Ă«shtĂ« krijuar pĂ«r tĂ« pajisur depozitat e dhĂ«nash me funksione automatizuese, qĂ« i bĂ«jnĂ« ato vetĂ«-menaxhuese, vetĂ«-skalueshĂ«m dhe vetĂ«-riparues. PĂ«r kĂ«tĂ«, Rook automatizon (pĂ«r depozitat e dhĂ«nash qĂ« pĂ«rdoren nĂ« ambientin Kubernetes): vendosjen, bootstrapping, konfigurimin, provisioning, skalimin, pĂ«rditĂ«simet, migrimet, riparimin pas defekteve, monitorimin dhe menaxhimin e burimeve.

Projekti është në fazën alfa dhe specializohet në orkestrimin e sistemit të ruajtjes së dhënash distribuuar Ceph në klasteret Kubernetes. Autorët gjithashtu deklarojnë për planet për të mbështetur sisteme të tjera ruajtjeje, por kjo nuk do të ndodhë në versionet e afërta.

Komponentet dhe struktura teknike

Bazuar në funksionimin e Rook brenda Kubernetes, është një operator special (më shumë rreth Operatorëve Kubernetes kemi shkruar në këtë artikull), duke automatizuar konfigurimin e magazinës dhe duke realizuar monitorimin e saj.

Pra, Operatori Rook paraqitet si një kontejner që përmban gjithçka të nevojshme për implementimin dhe mbajtjen e mëtejshme të magazinës. Ndër detyrat e operatorit janë:

  • krijimi i DaemonSet pĂ«r demonĂ«t e magazinimit Ceph (ceph-osd) me njĂ« kluster tĂ« thjeshtĂ« RADOS;
  • krijimi i pods pĂ«r monitorimin e Ceph (me ceph-mon, qĂ« kontrollojnĂ« gjendjen e klustrit; pĂ«r njĂ« shumicĂ« nĂ« shumicĂ«n e rasteve, vendosen tre kopje dhe nĂ« rast rĂ«nies sĂ« ndonjĂ«rit, ngrihet njĂ« e re);
  • menaxhimi i CRDs (Definitat e Burimeve tĂ« Personalizuara) pĂ«r vetĂ« klustrin, pula tĂ« magazinĂ«s, dyqane objektesh (grupe burimesh dhe shĂ«rbesh pĂ«r tĂ« shĂ«rbyer kĂ«rkesave HTTP, qĂ« kryejnĂ« PUT/GET pĂ«r objekte, - ata janĂ« tĂ« pajtueshĂ«m me S3 dhe Swift API), dhe gjithashtu sistemet e skedarĂ«ve;
  • initilizimi i pods pĂ«r tĂ« filluar tĂ« gjitha shĂ«rbimet e nevojshme;
  • krijimi i agjentĂ«ve Rook.

Agjentët Rook paraqiten si pods të veçantë që vendosen në çdo nyje Kubernetes. Qëllimi i agjentit është konfigurimi i plugin-it FlexVolume, i cili ofron mbështetje për vëllimet e ruajtjes në Kubernetes. Agjenti realizon funksionimin e ruajtjes: lidh pajisjet rrjetit të ruajtjes, monton vëllimet, formaton sistemin e skedarëve etj.

Rook — depozita e dhĂ«nash "vetĂ«-shĂ«rbyese" pĂ«r Kubernetes
Venda dhe roli i komponentëve Rook në planin e përgjithshëm të klasterit Kubernetes

Rook ofron tri lloje ruajtjesh:

  1. ruajtje tĂ« bllokut (Block, StorageClass) — monton ruajtjen nĂ« njĂ« pod tĂ« vetĂ«m;
  2. ruajtje objekt (Object, ObjectStore) — e disponueshme brenda dhe jashtĂ« klasterit Kubernetes (nĂ« API S3);
  3. sistemi i skedarĂ«ve tĂ« ndarĂ« (Shared File System, Sistemi i skedarĂ«ve) — sistem skedarĂ«sh qĂ« mund tĂ« montohet pĂ«r lexim dhe shkrim nga shumĂ« pod-e.

Njësi e brendshme e Rook përfshin:

  • Mons — pod-e pĂ«r monitorimin e Ceph (me ceph-mon tĂ« pĂ«rmendur mĂ« parĂ«);
  • OSDs — pod-e me demonĂ«t ceph-osd (DemonĂ«t e Ruajtjes Objekt);
  • MGR — pod-e me demonin ceph-mgr (Menaxheri Ceph), qĂ« ofron mundĂ«si tĂ« tjera monitorimi dhe ndĂ«rfaqe pĂ«r sisteme tĂ« jashtme (monitorimi/menaxhimi);
  • RGW (opsionale) — pod-e me ruajtjen objekt;
  • MDS (opsionale) — pod-e me sistemin e skedarĂ«ve tĂ« ndarĂ«.

Rook — depozita e dhĂ«nash "vetĂ«-shĂ«rbyese" pĂ«r Kubernetes

Të gjitha demonët e Rook (Mons, OSDs, MGR, RGW, MDS) janë kompaktuar në një binar të vetëm (rook), që ekzekutohet në një konteiner.

Për një paraqitje të shkurtër të projektit Rook, mund të jetë e dobishme gjithashtu kjo prezantim e vogël (12 slide) prezantimi nga Bassam Tabbara (CTO në Quantum Corp).

Eksploatimi i Rook

Operatori Rook mbĂ«shtet plotĂ«sisht versionet e Kubernetes 1.6 dhe mĂ« lart (dhe, pjesĂ«risht, versionin mĂ« tĂ« vjetĂ«r K8s — 1.5.2). Ai instalimi nĂ« nĂ« skenarĂ«t mĂ« tĂ« thjeshtĂ« duke dukur kĂ«shtu:

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

Përveç kësaj, për operatorin Rook është përgatitur Helm chart, duke mundësuar që instalimi të kryhet edhe kështu:

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

EkzistojnĂ« njĂ« numĂ«r i vogĂ«l opsionesh konfigurimi (pĂ«r shembull, mund tĂ« çaktivizohet mbĂ«shtetja RBAC, nĂ«se kjo mundĂ«si nuk pĂ«rdoret nĂ« klastri tuaj), tĂ« cilat kalohen nĂ« helm install pĂ«rmes parametrave --set key=value[,key=value] (ose tĂ« ruhet nĂ« njĂ« skedar tĂ« veçantĂ« YAML dhe tĂ« kalohen — pĂ«rmes -f values.yaml).

Pas instalimit të operatorit Rook dhe nënshkrimit të podëve me agjentët e tij, mbetet të krijohet klasteri i vetë Rook, konfigurimi më i thjeshtë i të cilit duket si më poshtë (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 nevojitet për të ruajtur grupin pas rinisjeve. Për rastet kur përdoret si një vend i përhershëm për ruajtjen e të dhënave, autorët e Rook në hostet Kubernetes rekomandojnë të ketë të paktën 5 GB hapësirë të lirë disku në këtë katalog.

Tani duhet të krijoni faktikisht një grup nga konfigurimi dhe të siguroheni që pod-et janë krijuar në grup (në hapësirën e emrave rook):

kubectl create -f rook-cluster.yaml
kubectl -n rook get pod
EMRI                             GATSHMËRI STATUSI  RINISJE   MOSHA
rook-api-1511082791-7qs0m       1/1       Po funksionon   0          5m
rook-ceph-mgr0-1279756402-wc4vt  1/1       Po funksionon   0          5m
rook-ceph-mon0-jflt5             1/1       Po funksionon   0          6m
rook-ceph-mon1-wkc8p             1/1       Po funksionon   0          6m
rook-ceph-mon2-p31dj             1/1       Po funksionon   0          6m
rook-ceph-osd-0h6nb              1/1       Po funksionon   0          5m

PĂ«rmirĂ«simi i grupit Rook (nĂ« version tĂ« ri) — kjo procedurĂ« nĂ« kĂ«tĂ« fazĂ« kĂ«rkon pĂ«rditĂ«simin e radhitur tĂ« tĂ« gjitha komponentĂ«ve tĂ« tij nĂ« njĂ« rend tĂ« caktuar, dhe mund tĂ« fillohet vetĂ«m pas sigurimit tĂ« njĂ« gjendjeje plotĂ«sisht 'tĂ« shĂ«ndoshĂ«' tĂ« instalimit aktual tĂ« Rook. Udhezuesi i detajuar hap mbas hapi pĂ«r pĂ«rmirĂ«simin e Rook version 0.5.0 nĂ« 0.5.1 mund tĂ« gjendet nĂ« nĂ« dokumentacionin e projektit..

Në nëntor të vitit të kaluar në blogun e Rook u publikua krahasimi performancës me EBS. Rezultatet e tij meritojnë vëmendje, dhe nëse e përmbledhim shkurtimisht, ato janë si më poshtë:

Rook — depozita e dhĂ«nash "vetĂ«-shĂ«rbyese" pĂ«r Kubernetes
Rook — depozita e dhĂ«nash "vetĂ«-shĂ«rbyese" pĂ«r Kubernetes

Perspektivat

Statusi aktual i Rook Ă«shtĂ« alpha, dhe versioni i tij mĂ« i fundit i madh deri mĂ« tani Ă«shtĂ« versioni 0.6, i lĂ«shuar nĂ« nĂ«ntor 2017 (korrigjimi aktual Ă«shtĂ« v0.6.2 — doli mĂ« 14 dhjetor). NĂ« gjysmĂ«n e parĂ« tĂ« vitit 2018 priten lĂ«shime tĂ« versioneve mĂ« tĂ« pjekura: beta dhe e stabilizuar (zyrtarisht e gatshme pĂ«r pĂ«rdorim nĂ« production).

Sipas roadmap të projektit, zhvilluesit kanë një vizion të detajuar për zhvillimin e Rook të paktën në dy lëshime të afërta: 0.7 (gatishmëria e tij në tracker-in GitHub vlerësohet si 60 %) dhe 0.8. Ndër ndryshimet e pritura janë kalimi i mbështetjes Ceph Block dhe Ceph Object në statusin beta, dynamic provisioning i volumeneve për CephFS, një sistem të avancuar logimi, përditësime automatike të klasterit, mbështetje për snapshot për volume.

Pranimi i Rook nĂ« mesin e projeketeve CNCF (ende nĂ« njĂ« fazĂ« shumĂ« tĂ« hershme — «inception-level», — nĂ« pĂ«rputhje me linkerd dhe CoreDNS) Ă«shtĂ« njĂ« garantim i veçantĂ« pĂ«r rritjen e interesit pĂ«r produktin. Sa do tĂ« konsolidohet ai nĂ« botĂ«n e aplikacioneve tĂ« bazuara nĂ« re, do tĂ« bĂ«het mĂ« qartĂ« pas shfaqjes sĂ« versioneve tĂ« stabilizuara, tĂ« cilat, pa dyshim, do tĂ« sjellin Rook “testues” dhe pĂ«rdorues tĂ« rinj.

P.S.

Lexoni gjithashtu në blogun tonë:

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster