
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 boteja e konteinerëve dhe cloud native, miraton projektin Rook në radhët e saj. Një rast i shkëlqyer për t'u njohur më mirë me këtë "orchester të sistemeve të ruajtjes së shpërndarë të të dhënave në Kubernetes."
ĂfarĂ« Ă«shtĂ« Rook?
â Ă«shtĂ« njĂ« programim i shkruar nĂ« Go ( nĂ« licencĂ« tĂ« lirĂ« Apache License 2.0), e destinuar pĂ«r t'i dhĂ«nĂ« ruajtjeve tĂ« tĂ« dhĂ«nave funksione automatizimi qĂ« i bĂ«jnĂ« ato vetĂ«-menaxhues, vetĂ«-skalues dhe vetĂ«-riparuese.. PĂ«r kĂ«tĂ«, Rook automatizon (pĂ«r ruajtjet e tĂ« dhĂ«nave, tĂ« aplikuara nĂ« mjedisin Kubernetes): vendosjen, bootstrapping, konfigurimin, provisioning, shkallĂ«zimin, azhornimet, migrimet, rikuperimin pas dĂ«shtimeve, monitorimin dhe menaxhimin e burimeve.
Projekti është në fazën alfa dhe specializohet në orkestrimin e sistemit të shpërndarë të ruajtjes së të dhënave Ceph në klasteret Kubernetes. Autorët gjithashtu deklarojnë se kanë plane për të mbështetur sisteme të tjera ruajtjeje, por kjo nuk do të ndodhë në lançimet e afërta.
Komponentët dhe struktura teknike
Baza e funksionimit të Rook brenda Kubernetes është një operator i veçantë (më shumë rreth Kubernetes Operators kemi shkruar në ), i cili automatizon konfigurimin e ruajtjes dhe realizon monitorimin e saj.
Pra, operatori Rook paraqitet si një kontejner, i cili përmban gjithçka të nevojshme për vendosjen dhe mbështetje më pas të ruajtjes. Mes detyrave të operatorit janë:
- krijimi i DaemonSet për demonët e ruajtjes Ceph () me një klaster të thjeshtë RADOS;
- krijimi i podëve për monitorimin e Ceph (me , që kontrollojnë gjendjen e klasterit; për kvorumin në shumicën e rasteve vendosen tre ekzemplarë dhe, në rast se ndonjëri prej tyre bie, bëhet një e re);
- menaxhimi i CRD-ve () pĂ«r vetĂ« , , (grupit tĂ« burimeve dhe shĂ«rbimeve pĂ«r tĂ« pĂ«rpunuar kĂ«rkesat HTTP, duke kryer PUT/GET pĂ«r objekte, â ato janĂ« tĂ« pajtueshme me S3 dhe Swift API), si dhe ;
- krijimi i podëve për të nisur të gjithë shërbimet e nevojshme;
- krijimi i agenëve Rook.
Agenët Rook paraqiten si pod të veçantë, të cilët vendosen në çdo nyje Kubernetes. Qëllimi i agentit është konfigurimi i plugin-it , që ofron mbështetje për volumin e ruajtjes në Kubernetes. Agjenti realizon operimin e ruajtjes: lidh pajisjet e ruajtjes në rrjet, monton volumin, formaton sistemin e skedarëve etj.

Vendi dhe roli i komponenteve Rook në diagramin e përgjithshëm të klasterit Kubernetes.
Rook ofron tri lloje ruajtjeje:
- (Block,
StorageClass) â monton ruajtjen nĂ« njĂ« pod tĂ« vetĂ«m; - (Object,
ObjectStore) â e aksesueshme brenda dhe jashtĂ« klasterit Kubernetes (pĂ«rmes API S3); - (Shared File System,
Sistemi i skedarĂ«ve) â njĂ« sistem skedarĂ«sh qĂ« mund tĂ« montohet pĂ«r lexim dhe shkrim nga shumĂ« pod-e.
Pajisja brenda 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 sĂ« Objekteve);
- MGR â pod-e me demonin (Menaxheri Ceph), i cili ofron mundĂ«si tĂ« tjera monitorimi dhe ndĂ«rfaqe pĂ«r sisteme tĂ« jashtme (monitorimi/menaxhimi);
- RGW (opcional) â pod-e me ruajtjen e objekteve;
- MDS (opcional) â pod-e me sistemin e skedarĂ«ve tĂ« ndarĂ«.

Të gjitha demonët e Rook (Mons, OSDs, MGR, RGW, MDS) janë kompiluar në një binar të vetëm (rook), i cili ekzekutohet në kontejner.
Për një përfaqësim të shkurtër të projektit Rook mund të jetë e dobishme edhe kjo dhezë e vogël (12 slajde) nga Bassam Tabbara (CTO në Quantum Corp).
Operimi i Rook
Operatori Rook mbĂ«shtet plotĂ«sisht Kubernetes nĂ« versionin 1.6 dhe mĂ« lart (dhe, pjesĂ«risht, versionin mĂ« tĂ« vjetĂ«r K8s â 1.5.2). QĂ«llimi i tij instalimi nĂ« duhet tĂ« duket kĂ«shtu:
cd cluster/examples/kubernetes
kubectl create -f rook-operator.yaml
kubectl create -f rook-cluster.yamlPër më tepër, për operatorin Rook është përgatitur , që e bën instalimin të mundshëm edhe kështu:
helm repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook Ka njĂ« numĂ«r tĂ« vogĂ«l (pĂ«r shembull, mund tĂ« çaktivizohet mbĂ«shtetja , nĂ«se kjo mundĂ«si nuk pĂ«rdoret nĂ« klasterin tuaj), tĂ« cilat kalohen nĂ« helm install pĂ«rmes parametrave --set key=value[,key=value] (ose mund tĂ« ruhen nĂ« njĂ« skedar YAML tĂ« veçantĂ« dhe tĂ« kalohen â pĂ«rmes -f values.yaml).
Pas instalimit të operatorit Rook dhe nisjes së pod-eve me agjentët e tij, mbetet të krijohet vetë klasteri 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 të veçantë duhet t'i kushtohet atributit dataDirHostPath, vlera e saktë e të cilës është e nevojshme për ruajtjen e klasës 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 rekomandojnë që në këtë katalog të ketë të paktën 5 GB hapësirë të lirë disk.
I mbetet të krijohet konkretisht klasteri nga konfigurimi dhe të sigurohemi që pod-et janë krijuar në klaster (në hapësirën e emrave rook):
kubectl create -f rook-cluster.yaml
kubectl -n rook get pod
EMRI GATI STADI RINISJET MOSHA
rook-api-1511082791-7qs0m 1/1 Duke funksionuar 0 5m
rook-ceph-mgr0-1279756402-wc4vt 1/1 Duke funksionuar 0 5m
rook-ceph-mon0-jflt5 1/1 Duke funksionuar 0 6m
rook-ceph-mon1-wkc8p 1/1 Duke funksionuar 0 6m
rook-ceph-mon2-p31dj 1/1 Duke funksionuar 0 6m
rook-ceph-osd-0h6nb 1/1 Duke funksionuar 0 5mUpgrade Krijimi i klasterit Rook (deri nĂ« versionin e ri) â Ă«shtĂ« njĂ« procedurĂ« qĂ« nĂ« kĂ«tĂ« fazĂ« kĂ«rkon pĂ«rmirĂ«simin e radhĂ«s tĂ« tĂ« gjithĂ« komponenteve tĂ« tij nĂ« njĂ« rend tĂ« caktuar, dhe mund tĂ« fillohet vetĂ«m pasi tĂ« keni verifikuar se instalimi aktual i Rook Ă«shtĂ« plotĂ«sisht i 'shĂ«ndetshĂ«m'. NjĂ« udhĂ«zues tĂ« hollĂ«sishĂ«m hap pas hapi pĂ«r shembullin e pĂ«rmirĂ«simit tĂ« Rook nga versioni 0.5.0 nĂ« 0.5.1 mund tĂ« gjeni nĂ« .
Në nëntor të vitit të kaluar, në blogun e Rook krahasimi performancës me EBS. Rezultatet e tij meritojnë vëmendjen, dhe nëse e përmbledhim shkurt, janë si në vijim:


Perspektivat
Statusi aktual i Rook Ă«shtĂ« alpha, dhe lĂ«shimi mĂ« i fundit i madh deri mĂ« sot Ă«shtĂ« , i lĂ«shuar nĂ« nĂ«ntor 2017 (korrigjimi aktual â â doli mĂ« 14 dhjetor). Edhe nĂ« gjysmĂ«n e parĂ« tĂ« vitit 2018 priten lĂ«shimet e versioneve mĂ« tĂ« pjekura: beta dhe tĂ« stabilizuara (oficialisht tĂ« gatshme pĂ«r t'u pĂ«rdorur nĂ« production).
Sipas i projektit, zhvilluesit kanë një imagjinatë të detajuar për zhvillimin e Rook, të paktën në dy lëshimet e ardhshme: 0.7 (gatishmëria e tij në tracker-in GitHub si 60 %) dhe 0.8. Ndër ndryshimet e pritura është kalimi i mbështetjes për Ceph Block dhe Ceph Object në statusin beta, provisioning dinamik i volumeve për CephFS, një sistem të avancuar logimi, përditësime automatike të klasterit, mbështetje për snapshot-e për volume.
Pranimi i Rook nĂ« mesin e (ndjeshĂ«m nĂ« fazĂ«n mĂ« tĂ« hershme â 'niveli i konceptit', â sĂ« bashku me dhe ) Ă«shtĂ« njĂ« garanci pĂ«r rritjen e interesit pĂ«r produktin. Sa do tĂ« konsolidohet nĂ« botĂ«n e aplikacioneve nĂ« cloud do tĂ« bĂ«het mĂ« e qartĂ« pas daljes sĂ« versioneve stabile, tĂ« cilat, pa dyshim, do t'i sjellin Rook 'testues' dhe pĂ«rdorues tĂ« rinj.
P.S.
Lexoni gjithashtu në blogun tonë:
- «»;
- «»;
- «»;
- «»;
- «».
Burimi: habr.com
