Rook - ինքնասպասարկման տվյալների խանութ Kubernetes-ի համար

Rook - ինքնասպասարկման տվյալների խանութ Kubernetes-ի համար

Հունվարի 29-ին Cloud Native Computing Foundation-ի (CNCF) տեխնիկական կոմիտեն՝ Kubernetes-ի, Prometheus-ի և այլ բաց կոդով արտադրանքների ետևում գտնվող բեռնարկղային և ամպային հայրենի աշխարհից, объявил նախագծի ընդունման վերաբերյալ Քայլ իրենց շարքերում: Հիանալի հնարավորություն է ավելի լավ ճանաչելու այս «Kubernetes distributed storage orchestrator»-ին:

Ի՞նչ է Ռուկը:

Քայլ — ծրագրակազմ է գրված Go-ում (տարածվում է անվճար Apache լիցենզիայի 2.0-ի ներքո), որը նախատեսված է տվյալների պահեստներին տրամադրելու ավտոմատացված հատկանիշներ, որոնք դրանք դարձնում են: ինքնակառավարում, ինքնակառավարում և ինքնաբուժում. Դրան հասնելու համար Rook-ը ավտոմատացնում է (Kubernetes միջավայրում աշխատող տվյալների պահեստների համար)՝ տեղակայում, բեռնաթափում, կազմաձևում, ապահովում, մասշտաբավորում, արդիականացում, միգրացիա, ձախողում, մոնիտորինգ և ռեսուրսների կառավարում:

Նախագիծը ալֆա փուլում է և մասնագիտացած է Կուբերնետեսի կլաստերներում Ceph-ի բաշխված տվյալների պահպանման համակարգի կազմակերպման մեջ: Հեղինակները նաև հայտարարում են պահեստավորման այլ համակարգերին աջակցելու ծրագրերի մասին, բայց դա տեղի չի ունենա հաջորդ թողարկումներում:

Բաղադրիչներ և տեխնիկական սարք

Kubernetes-ի ներսում Rook-ի գործունեության առանցքը հատուկ օպերատորն է (Մենք ավելին գրել ենք Kubernetes օպերատորների մասին այս հոդվածը), ավտոմատացնելով պահեստի կազմաձևումը և իրականացնելով դրա մոնիտորինգը:

Այնպես որ, Rook օպերատոր ներկայացված է որպես կոնտեյներ, որը պարունակում է այն ամենը, ինչ անհրաժեշտ է պահեստի տեղակայման և հետագա պահպանման համար: Օպերատորի պարտականությունները ներառում են.

  • ստեղծելով DaemonSet Ceph պահեստավորման դևերի համար (ceph-osd) պարզ RADOS կլաստերով;
  • ստեղծելով պատյաններ Ceph մոնիտորինգի համար (հետ ceph-mon, ստուգելով կլաստերի կարգավիճակը; քվորումի հասնելու համար շատ դեպքերում տեղադրվում է երեք օրինակ, և եթե դրանցից որևէ մեկը ընկնում է, նորը բարձրանում է);
  • CRD-ների կառավարում (Պատվերով ռեսուրսների սահմանումներ) առավելագույնը կլաստեր, պահեստային լողավազաններ, օբյեկտների պահեստներ (ռեսուրսների և ծառայությունների մի շարք HTTP հարցումների մշակման համար, որոնք կատարում են PUT/GET օբյեկտների վրա. դրանք համատեղելի են S3-ի և Swift API-ի հետ)Իսկ ֆայլային համակարգեր;
  • բոլոր անհրաժեշտ ծառայությունները սկսելու համար պատիճների սկզբնավորում;
  • ստեղծելով Rook գործակալներին:

Ռուկ գործակալներ ներկայացված են առանձին պատիճներով, որոնք տեղակայված են յուրաքանչյուր Kubernetes հանգույցի վրա: Գործակալի նպատակն է կարգավորել plugin-ը FlexVolume, որն ապահովում է Kubernetes-ում պահեստավորման ծավալների աջակցություն: Գործակալն իրականացնում է պահեստավորման գործողություն՝ միացնում է ցանցային պահեստավորման սարքերը, տեղադրում է ծավալներ, ձևավորում է ֆայլային համակարգը և այլն։

Rook - ինքնասպասարկման տվյալների խանութ Kubernetes-ի համար
Rook բաղադրիչների տեղն ու դերը Kubernetes կլաստերի ընդհանուր սխեմայում

Rook-ն առաջարկում է պահեստավորման երեք տեսակ.

  1. արգելափակել (Խոչընդոտել, StorageClass) - տեղադրում է պահեստը մեկ պատիճ;
  2. օբյեկտ (Օբյեկտ, ObjectStore) - հասանելի է Kubernetes կլաստերի ներսում և դրսում (S3 API-ի միջոցով);
  3. համօգտագործվող ֆայլային համակարգ (Համօգտագործվող ֆայլային համակարգ, Filesystem) ֆայլային համակարգ է, որը կարող է տեղադրվել բազմաթիվ պատյաններից կարդալու և գրելու համար:

Rook-ի ներքին կառուցվածքը ներառում է.

  • Mons — պատիճներ Ceph մոնիտորինգի համար (արդեն նշված ceph-mon-ով);
  • OSD-ներ — պատիճներ ceph-osd դեմոններով (Object Storage Daemons);
  • Մ.Գ.Ռ. - պատիճներ դևով ceph-mgr (Ceph Manager), որն ապահովում է արտաքին համակարգերի մոնիտորինգի լրացուցիչ հնարավորություններ և միջերեսներ (մոնիթորինգ/կառավարում);
  • R.G.W. (ըստ ցանկության) - պատիճներ՝ օբյեկտների պահեստով;
  • MDS (ըստ ցանկության) — փոդներ՝ ընդհանուր ֆայլային համակարգով:

Rook - ինքնասպասարկման տվյալների խանութ Kubernetes-ի համար

Rook-ի բոլոր դևերը (Mons, OSD, MGR, RGW, MDS) կազմվում են մեկ երկուականի մեջ (rook), վազում է կոնտեյներով:

Rook նախագծի հակիրճ ներածության համար այս կարճ (12 սլայդ) նույնպես կարող է օգտակար լինել. ներկայացում Bassam Tabbara-ից (CTO Quantum Corp-ում):

Operating Rook

Rook օպերատորը լիովին աջակցում է Kubernetes-ի 1.6 և ավելի բարձր տարբերակին (և մասամբ՝ հին K8-ի թողարկումը՝ 1.5.2), Նրա տեղադրում в ամենապարզ սցենարը կարծես սա:

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

Բացի այդ, պատրաստվել է Rook օպերատորը Սաղավարտի աղյուսակ, որի շնորհիվ տեղադրումը կարող է իրականացվել հետևյալ կերպ.

helm repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook

Կա փոքր քանակություն հարմարեցման ընտրանքներ (օրինակ, կարող եք անջատել աջակցությունը RBAC, եթե այս հատկությունը չի օգտագործվում ձեր կլաստերում), որոնք փոխանցվում են helm install պարամետրի միջոցով --set key=value[,key=value] (կամ պահեք այն առանձին YAML ֆայլում և փոխանցեք այն միջոցով -f values.yaml).

Rook օպերատորը տեղադրելուց և իր գործակալների հետ pods գործարկելուց հետո մնում է ստեղծել ինքնին Rook կլաստերը, որի ամենապարզ կոնֆիգուրացիան այսպիսի տեսք ունի (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

ՆշումՀատուկ ուշադրություն պետք է դարձնել հատկանիշին dataDirHostPath, որի ճիշտ արժեքը անհրաժեշտ է վերաբեռնումից հետո կլաստերը պահպանելու համար։ Օգտագործման դեպքերի համար, երբ այն օգտագործվում է որպես Kubernetes-ի հոսթերի Rook տվյալների մշտական ​​պահպանման վայր, հեղինակները խորհուրդ են տալիս այս գրացուցակում ունենալ առնվազն 5 ԳԲ ազատ սկավառակի տարածություն:

Մնում է իրականում ստեղծել կլաստերը կոնֆիգուրացիայից և համոզվել, որ պատյանները ստեղծվել են կլաստերում (անունների տարածքում 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

Թարմացնել Rook կլաստերը (նոր տարբերակին) ընթացակարգ է, որն այս փուլում պահանջում է իր բոլոր բաղադրիչների հաջորդական թարմացումը որոշակի հաջորդականությամբ, և այն կարող է սկսվել միայն այն բանից հետո, երբ համոզվեք, որ ընթացիկ Rook տեղադրումը լիովին «առողջ է»: Rook 0.5.0-ից մինչև 0.5.1 տարբերակի թարմացման մանրամասն քայլ առ քայլ հրահանգը կարելի է գտնել այստեղ նախագծային փաստաթղթեր.

Անցյալ նոյեմբերին, Ռուկի բլոգը հրատարակվել է համեմատություն արտադրողականություն EBS-ի հետ: Նրա արդյունքները արժանի են ուշադրության, բայց մի խոսքով, դրանք հետևյալն են.

Rook - ինքնասպասարկման տվյալների խանութ Kubernetes-ի համար
Rook - ինքնասպասարկման տվյալների խանութ Kubernetes-ի համար

Հեռանկարները

Rook-ի ներկայիս կարգավիճակը ալֆա է, և մինչ օրս նրա վերջին հիմնական թողարկումն է 0.6 տարբերակը, թողարկվել է 2017 թվականի նոյեմբերին (ներկայիս ուղղում - v0.6.2 — ազատ է արձակվել դեկտեմբերի 14-ին): Սպասվում է, որ ավելի հասուն տարբերակները կթողարկվեն 2018-ի առաջին կեսին՝ բետա և կայուն (պաշտոնապես պատրաստ է արտադրության մեջ օգտագործման համար):

Ըստ ճանապարհային քարտեզը նախագիծը, մշակողները մանրամասն տեսլական ունեն Rook-ի զարգացման վերաբերյալ առնվազն երկու առաջիկա թողարկումներում՝ 0.7 (դրա պատրաստակամությունը գտնվում է GitHub tracker-ում։ գնահատվեն որպես 60%) և 0.8: Ակնկալվող փոփոխությունները ներառում են Ceph Block-ի և Ceph Object-ի աջակցության տեղափոխումը բետա կարգավիճակի, CephFS-ի համար ծավալների դինամիկ տրամադրում, գրանցման առաջադեմ համակարգ, կլաստերի ավտոմատ թարմացումներ և ծավալների ակնոցների աջակցություն:

Ռուկի ընդունումը շարքերում CNCF նախագծեր (առայժմ շատ վաղ փուլում՝ «սկզբնական մակարդակ», - համարժեք կապող и CoreDNS) ապրանքի նկատմամբ աճող հետաքրքրության մի տեսակ երաշխիք է։ Թե որքանով այն տեղ կզբաղեցնի ամպային հավելվածների աշխարհում, ավելի պարզ կդառնա կայուն տարբերակների հայտնվելուց հետո, ինչը, անկասկած, կբերի Rook-ին նոր «փորձարկողներ» և օգտվողներ:

PS

Կարդացեք նաև մեր բլոգում.

Source: www.habr.com

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster