Rook — ruajtje tĂ« dhĂ«nash “self-service” pĂ«r Kubernetes

Rook — ruajtje tĂ« dhĂ«nash “self-service” 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 boteja e konteinerëve dhe cloud native, njoftoi 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?

Rook — Ă«shtĂ« njĂ« programim i shkruar nĂ« Go (shpĂ«rndahet 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ë këto artikuj), 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 (ceph-osd) me njĂ« klaster tĂ« thjeshtĂ« RADOS;
  • krijimi i podĂ«ve pĂ«r monitorimin e Ceph (me ceph-mon, 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 (Custom Resource Definitions) pĂ«r vetĂ« klasterin, e gjinive tĂ« ruajtjes, object stores (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 sistemet e skedave;
  • 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 FlexVolume, 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.

Rook — ruajtje tĂ« dhĂ«nash “self-service” pĂ«r Kubernetes
Vendi dhe roli i komponenteve Rook në diagramin e përgjithshëm të klasterit Kubernetes.

Rook ofron tri lloje ruajtjeje:

  1. ruajtje bllok (Block, StorageClass) — monton ruajtjen nĂ« njĂ« pod tĂ« vetĂ«m;
  2. ruajtje objekt (Object, ObjectStore) — e aksesueshme brenda dhe jashtĂ« klasterit Kubernetes (pĂ«rmes API S3);
  3. sistemi i skedarĂ«ve tĂ« ndarĂ« (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 ceph-mgr (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Ă«.

Rook — ruajtje tĂ« dhĂ«nash “self-service” pĂ«r Kubernetes

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) prezantimi 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Ă« scenari mĂ« i thjeshtĂ« duhet tĂ« duket kĂ«shtu:

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

Për më tepër, për operatorin Rook është përgatitur Helm chart, 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 opsionesh konfigurimi (pĂ«r shembull, mund tĂ« çaktivizohet mbĂ«shtetja RBAC, 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: 1024

Shë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          5m

Upgrade 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Ă« 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ëmendjen, dhe nëse e përmbledhim shkurt, janë si në vijim:

Rook — ruajtje tĂ« dhĂ«nash “self-service” pĂ«r Kubernetes
Rook — ruajtje tĂ« dhĂ«nash “self-service” pĂ«r Kubernetes

Perspektivat

Statusi aktual i Rook Ă«shtĂ« alpha, dhe lĂ«shimi mĂ« i fundit i madh deri mĂ« sot Ă«shtĂ« versioni 0.6, i lĂ«shuar nĂ« nĂ«ntor 2017 (korrigjimi aktual — v0.6.2 — 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 roadmap 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 përcaktohet 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 projekteve CNCF (ndjeshĂ«m nĂ« fazĂ«n mĂ« tĂ« hershme — 'niveli i konceptit', — sĂ« bashku me linkerd dhe . Kubelet regjistron pod-in me CoreDNS si server emri nĂ« skedarĂ«t) Ă«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

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