
Հունվարի 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 պահեստավորման դևերի համար () պարզ RADOS կլաստերով;
- ստեղծելով պատյաններ Ceph մոնիտորինգի համար (հետ , ստուգելով կլաստերի կարգավիճակը; քվորումի հասնելու համար շատ դեպքերում տեղադրվում է երեք օրինակ, և եթե դրանցից որևէ մեկը ընկնում է, նորը բարձրանում է);
- CRD-ների կառավարում () առավելագույնը , , (ռեսուրսների և ծառայությունների մի շարք HTTP հարցումների մշակման համար, որոնք կատարում են PUT/GET օբյեկտների վրա. դրանք համատեղելի են S3-ի և Swift API-ի հետ)Իսկ ;
- բոլոր անհրաժեշտ ծառայությունները սկսելու համար պատիճների սկզբնավորում;
- ստեղծելով Rook գործակալներին:
Ռուկ գործակալներ ներկայացված են առանձին պատիճներով, որոնք տեղակայված են յուրաքանչյուր Kubernetes հանգույցի վրա: Գործակալի նպատակն է կարգավորել plugin-ը , որն ապահովում է Kubernetes-ում պահեստավորման ծավալների աջակցություն: Գործակալն իրականացնում է պահեստավորման գործողություն՝ միացնում է ցանցային պահեստավորման սարքերը, տեղադրում է ծավալներ, ձևավորում է ֆայլային համակարգը և այլն։

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

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 Կա փոքր քանակություն (օրինակ, կարող եք անջատել աջակցությունը , եթե այս հատկությունը չի օգտագործվում ձեր կլաստերում), որոնք փոխանցվում են 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-ի ներկայիս կարգավիճակը ալֆա է, և մինչ օրս նրա վերջին հիմնական թողարկումն է , թողարկվել է 2017 թվականի նոյեմբերին (ներկայիս ուղղում - — ազատ է արձակվել դեկտեմբերի 14-ին): Սպասվում է, որ ավելի հասուն տարբերակները կթողարկվեն 2018-ի առաջին կեսին՝ բետա և կայուն (պաշտոնապես պատրաստ է արտադրության մեջ օգտագործման համար):
Ըստ նախագիծը, մշակողները մանրամասն տեսլական ունեն Rook-ի զարգացման վերաբերյալ առնվազն երկու առաջիկա թողարկումներում՝ 0.7 (դրա պատրաստակամությունը գտնվում է GitHub tracker-ում։ որպես 60%) և 0.8: Ակնկալվող փոփոխությունները ներառում են Ceph Block-ի և Ceph Object-ի աջակցության տեղափոխումը բետա կարգավիճակի, CephFS-ի համար ծավալների դինամիկ տրամադրում, գրանցման առաջադեմ համակարգ, կլաստերի ավտոմատ թարմացումներ և ծավալների ակնոցների աջակցություն:
Ռուկի ընդունումը շարքերում (առայժմ շատ վաղ փուլում՝ «սկզբնական մակարդակ», - համարժեք и ) ապրանքի նկատմամբ աճող հետաքրքրության մի տեսակ երաշխիք է։ Թե որքանով այն տեղ կզբաղեցնի ամպային հավելվածների աշխարհում, ավելի պարզ կդառնա կայուն տարբերակների հայտնվելուց հետո, ինչը, անկասկած, կբերի Rook-ին նոր «փորձարկողներ» և օգտվողներ:
PS
Կարդացեք նաև մեր բլոգում.
- «";
- «";
- «";
- «";
- «.
Source: www.habr.com
