
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, 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?
â Ă«shtĂ« njĂ« software i shkruar nĂ« Go ( 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ë ), 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 () me një kluster të thjeshtë RADOS;
- krijimi i pods për monitorimin e Ceph (me , 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 () për vetë , , (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 ;
- 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 , 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.

Venda dhe roli i komponentëve Rook në planin e përgjithshëm të klasterit Kubernetes
Rook ofron tri lloje ruajtjesh:
- (Block,
StorageClass) â monton ruajtjen nĂ« njĂ« pod tĂ« vetĂ«m; - (Object,
ObjectStore) â e disponueshme brenda dhe jashtĂ« klasterit Kubernetes (nĂ« API S3); - (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 (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Ă«.

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) 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Ă« duke dukur kĂ«shtu:
cd cluster/examples/kubernetes
kubectl create -f rook-operator.yaml
kubectl create -f rook-cluster.yamlPërveç kësaj, për operatorin Rook është përgatitur , 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 (pĂ«r shembull, mund tĂ« çaktivizohet mbĂ«shtetja , 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: 1024Shë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 5mPĂ«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ë nëntor të vitit të kaluar në blogun e Rook krahasimi performancës me EBS. Rezultatet e tij meritojnë vëmendje, dhe nëse e përmbledhim shkurtimisht, ato janë si më poshtë:


Perspektivat
Statusi aktual i Rook Ă«shtĂ« alpha, dhe versioni i tij mĂ« i fundit i madh deri mĂ« tani Ă«shtĂ« , i lĂ«shuar nĂ« nĂ«ntor 2017 (korrigjimi aktual Ă«shtĂ« â 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 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 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 (ende nĂ« njĂ« fazĂ« shumĂ« tĂ« hershme â «inception-level», â nĂ« pĂ«rputhje me dhe ) Ă«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
