
Yanvarın 29-da CNCF-nin (Cloud Native Computing Foundation), Kubernetes, Prometheus və konteynerlər dünyasından və buluddan olan digər Açıq Mənbəli məhsulların arxasında duran təşkilatın texniki komitəsi, layihənin qəbulu haqqında yolmaq sıralarına daxil olurlar. Bu "Kubernetesdə paylanmış saxlama orkestrini" tanımaq üçün əla fürsət.
Nə cür Rook?
Go-da yazılmış proqramdır ( pulsuz Apache License 2.0 altında), məlumat anbarlarını avtomatlaşdırılmış funksiyalarla təmin etmək üçün hazırlanmışdır. özünü idarə etmək, özünü ölçmək və özünü müalicə etmək. Bunun üçün Rook avtomatlaşdırır (Kubernetes mühitində istifadə olunan məlumat anbarları üçün): yerləşdirmə, yükləmə, konfiqurasiya, təminat, miqyaslaşdırma, yeniləmələr, köçürmələr, fəlakətin bərpası, monitorinq və resursların idarə edilməsi.
Layihə alfa mərhələsindədir və Kubernetes klasterlərində Ceph paylanmış saxlama sisteminin təşkilində ixtisaslaşıb. Müəlliflər digər saxlama sistemlərini dəstəkləmək planlarını da elan edirlər, lakin bu, növbəti buraxılışlarda baş verməyəcək.
Komponentlər və texniki cihaz
Rukun Kubernetes daxilindəki işi xüsusi operatora əsaslanır (Biz Kubernetes Operatorları haqqında daha çox yazdıq )yaddaş konfiqurasiyasını avtomatlaşdıran və onun monitorinqini həyata keçirən .
Belə ki, Rook operatoru anbarın yerləşdirilməsi və sonrakı saxlanması üçün lazım olan hər şeyi ehtiva edən konteyner kimi görünür. Operatorun öhdəliklərinə aşağıdakılar daxildir:
- Ceph saxlama demonları üçün DaemonSet yaratmaq () sadə RADOS çoxluğu ilə;
- Ceph monitorinqi üçün podların yaradılması (ilə , klasterin vəziyyətinin yoxlanılması; kvorum üçün, əksər hallarda üç nüsxə yerləşdirilir və onlardan hər hansı biri düşərsə, yenisi yüksəlir);
- CRD-lərin idarə edilməsi () özü üçün , , (obyektlərdə PUT/GET yerinə yetirən HTTP sorğularına xidmət etmək üçün resurslar və xidmətlər dəsti - onlar S3 və Swift API ilə uyğundur)Və ;
- bütün lazımi xidmətləri işə salmaq üçün podların işə salınması;
- Rook agentlərinin yaradılması.
Rook agentləri hər bir Kubernetes qovşağında yerləşdirilən ayrıca podlar ilə təmsil olunur. Agentin məqsədi plagin konfiqurasiyasıdır , Kubernetes-də saxlama həcmlərinə dəstək verən. Agent yaddaşın işini həyata keçirir: şəbəkə saxlama cihazlarını birləşdirir, həcmləri bağlayır, fayl sistemini formatlaşdırır və s.

Ümumi Kubernetes klaster sxemində Rook komponentlərinin yeri və rolu
Rook üç növ saxlama təklif edir:
- (Blok,
StorageClass) — anbarı bir ocağa quraşdırır; - (Obyekt,
ObjectStore) - Kubernetes klasterinin daxilində və xaricində mövcuddur (S3 API vasitəsilə); - (Paylaşılan Fayl Sistemi,
Filesystem) çoxlu podlardan oxumaq və yazmaq üçün quraşdırıla bilən fayl sistemidir.
Rookun daxili hissələrinə aşağıdakılar daxildir:
- Mons — Ceph monitorinqi üçün podlar (artıq qeyd olunan ceph-mon ilə);
- OSD-lər - ceph-osd demonları olan podlar (Obyekt Saxlama Daemonları);
- M.G.R. - bir cin ilə pods Xarici sistemlər (monitorinq/nəzarət) üçün əlavə monitorinq imkanları və interfeyslər təmin edən (Ceph Manager);
- RGW (isteğe bağlı) - obyektin saxlanması olan podlar;
- MDS (isteğe bağlı) - paylaşılan fayl sistemi ilə pods.

Bütün Rook demonları (Mons, OSDs, MGR, RGW, MDS) tək ikili sistemdə (rook) konteynerdə çalışan.
Rook layihəsinə qısa giriş üçün bu qısa (12 slayd) da faydalı ola bilər. Bassam Tabbaradan (Quantum Corp-da CTO).
Rookun idarə edilməsi
Rook operatoru Kubernetes 1.6 və daha yüksək versiyaları tam dəstəkləyir (və qismən köhnə K8 buraxılışı - 1.5.2). Onun quraşdırılması в bu kimi görünür:
cd cluster/examples/kubernetes
kubectl create -f rook-operator.yaml
kubectl create -f rook-cluster.yamlBundan əlavə, Rook operatoru hazırlanır , bunun sayəsində quraşdırma bu şəkildə həyata keçirilə bilər:
helm repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook Kiçik miqdar mövcuddur (məsələn, dəstəyi söndürə bilərsiniz , bu xüsusiyyət klasterinizdə istifadə edilmirsə), hansılara ötürülür helm install parametr vasitəsilə --set key=value[,key=value] (və ya ayrıca YAML faylında saxlayın və vasitəsilə ötürün -f values.yaml).
Rook operatorunu quraşdırdıqdan və onun agentləri ilə podları işə saldıqdan sonra ən sadə konfiqurasiyası belə görünən Rook klasterinin özünü yaratmaq qalır (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: 1024Qeyd: atributuna xüsusi diqqət yetirilməlidir dataDirHostPath, yenidən başladıqdan sonra klasteri saxlamaq üçün lazım olan düzgün dəyəri. Onun Kubernetes hostlarında Rook məlumatları üçün daimi saxlama yeri kimi istifadə edildiyi hallarda müəlliflər bu kataloqda ən azı 5 GB boş disk sahəsinin olmasını tövsiyə edirlər.
Qalan şey, həqiqətən, konfiqurasiyadan klaster yaratmaq və podların klasterdə (adlar sahəsində) yaradıldığına əmin olmaqdır. 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 5mTəkmilləşdirin Rook klaster (yeni versiyaya qədər) bu mərhələdə onun bütün komponentlərinin müəyyən ardıcıllıqla ardıcıl yenilənməsini tələb edən prosedurdur və siz onu yalnız cari Rook quraşdırmasının tamamilə “sağlam” vəziyyətdə olmasını təmin etdikdən sonra başlaya bilərsiniz. dövlət. Rook versiyasının 0.5.0-dan 0.5.1-ə qədər yenilənməsi nümunəsindən istifadə edərək ətraflı addım-addım təlimatları burada tapa bilərsiniz. .
Keçən Noyabrda Rook bloqunda müqayisə məhsuldarlıq EBS ilə. Onun nəticələri diqqətə layiqdir və qısaca olaraq bunlar aşağıdakılardır:


Perspektivləri
Rookun hazırkı statusu alfadır və bu günə qədər ən son buraxılışıdır , 2017-ci ilin noyabrında buraxılmışdır (cari düzəliş - - dekabrın 14-də çıxdı). Artıq 2018-ci ilin birinci yarısında daha yetkin versiyaların buraxılışları gözlənilir: beta və stabil (rəsmi olaraq istehsalda istifadəyə hazırdır).
Uyğun olaraq Layihədə, tərtibatçılar ən azı növbəti iki buraxılışda Rook-un inkişafı üçün ətraflı vizyona sahibdirlər: 0.7 (hazırlığı GitHub izləyicisindədir) 60% və 0.8 kimi. Gözlənilən dəyişikliklər arasında Ceph Block və Ceph Object dəstəyinin beta versiya statusuna ötürülməsi, CephFS üçün həcmlərin dinamik təminatı, qabaqcıl giriş sistemi, avtomatlaşdırılmış klaster yeniləmələri, həcmlər üçün snapshotların dəstəklənməsi daxildir.
Rookun Nömrəni Alması (indiyə qədər çox erkən mərhələdə - "başlanğıc səviyyəsində" - ilə bərabərdir и ) məhsula marağın artmasının bir növ təminatıdır. Onun bulud proqramları dünyasında necə yer tutacağı stabil versiyalar buraxıldıqdan sonra daha aydın olacaq və bu, şübhəsiz ki, Rook-a yeni testçilər və istifadəçilər gətirəcək.
PS
Bloqumuzda da oxuyun:
- «";
- «";
- «";
- «";
- «.
Mənbə: www.habr.com
