Rook - Kubernetes üçün özünəxidmət məlumat anbarı

Rook - Kubernetes üçün özünəxidmət məlumat anbarı

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?

yolmaq Go-da yazılmış proqramdır (yayılı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 Bu məqalə)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 (ceph-osd) sadə RADOS çoxluğu ilə;
  • Ceph monitorinqi üçün podların yaradılması (ilə ceph-mon, 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 (Xüsusi Resurs Tərifləri) özü üçün klaster, saxlama hovuzları, obyekt anbarları (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)fayl sistemləri;
  • 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 FlexVolume, 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.

Rook - Kubernetes üçün özünəxidmət məlumat anbarı
Ümumi Kubernetes klaster sxemində Rook komponentlərinin yeri və rolu

Rook üç növ saxlama təklif edir:

  1. blok (Blok, StorageClass) — anbarı bir ocağa quraşdırır;
  2. obyekt (Obyekt, ObjectStore) - Kubernetes klasterinin daxilində və xaricində mövcuddur (S3 API vasitəsilə);
  3. paylaşılan fayl sistemi (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 ceph-mgr 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.

Rook - Kubernetes üçün özünəxidmət məlumat anbarı

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. təqdimat 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ı в ən sadə ssenari bu kimi görünür:

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

Bundan əlavə, Rook operatoru hazırlanır Sükan diaqramı, 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 quraşdırma seçimləri (məsələn, dəstəyi söndürə bilərsiniz RBAC, 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: 1024

Qeyd: 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          5m

Tə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. layihə sənədləri.

Keçən Noyabrda Rook bloqunda nəşr olundu 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:

Rook - Kubernetes üçün özünəxidmət məlumat anbarı
Rook - Kubernetes üçün özünəxidmət məlumat anbarı

Perspektivləri

Rookun hazırkı statusu alfadır və bu günə qədər ən son buraxılışıdır versiya 0.6, 2017-ci ilin noyabrında buraxılmışdır (cari düzəliş - v0.6.2 - 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 Yol 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) qiymətləndirilir 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ı CNCF layihələri (indiyə qədər çox erkən mərhələdə - "başlanğıc səviyyəsində" - ilə bərabərdir linkerd и CoreDNS) 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

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster