Rook - Kubernetes සඳහා ස්වයං සේවා දත්ත ගබඩාවක්

Rook - Kubernetes සඳහා ස්වයං සේවා දත්ත ගබඩාවක්

ජනවාරි 29 වෙනිදා, CNCF (Cloud Native Computing Foundation) හි තාක්ෂණික කමිටුව, Kubernetes, Prometheus සහ අනෙකුත් විවෘත මූලාශ්‍ර නිෂ්පාදන ලෝකයේ බහාලුම් සහ ක්ලවුඩ් ස්වදේශික නිෂ්පාදන පිටුපස, නිවේදනය කරන ලදි ව්යාපෘතිය පිළිගැනීම ගැන රූක් ඔවුන්ගේ නිලයට. මෙම "Kubernetes හි බෙදා හරින ලද ගබඩා වාදකයා" දැන හඳුනා ගැනීමට කදිම අවස්ථාවක්.

මොන වගේ Rook ද?

රූක් Go හි ලියා ඇති මෘදුකාංගයකි (විසින් බෙදා හරිනු ලැබේ නොමිලේ Apache බලපත්‍රය 2.0 යටතේ), දත්ත ගබඩාවලට ස්වයංක්‍රීය ක්‍රියාකාරකම් ඇති කිරීම සඳහා නිර්මාණය කර ඇත. ස්වයං කළමනාකරණය, ස්වයං පරිමාණය සහ ස්වයං-සුව කිරීම. මෙය සිදු කිරීම සඳහා, රූක් ස්වයංක්‍රීය කරයි (කුබර්නෙටස් පරිසරයක භාවිතා කරන දත්ත ගබඩා සඳහා): යෙදවීම, බූට්ස්ට්‍රැපිං, වින්‍යාස කිරීම, ප්‍රතිපාදන, පරිමාණය, යාවත්කාලීන කිරීම්, සංක්‍රමණ, ආපදා ප්‍රතිසාධනය, අධීක්ෂණය සහ සම්පත් කළමනාකරණය.

ව්‍යාපෘතිය ඇල්ෆා මට්ටමේ පවතින අතර කුබර්නෙටස් පොකුරුවල සීෆ් බෙදා හරින ලද ගබඩා පද්ධතිය සංවිධානය කිරීම සඳහා විශේෂීකරණය වේ. කතුවරුන් වෙනත් ගබඩා පද්ධති සඳහා සහය දැක්වීමේ සැලසුම් ද නිවේදනය කරයි, නමුත් මෙය ඊළඟ නිකුතු වලදී සිදු නොවනු ඇත.

සංරචක සහ තාක්ෂණික උපාංගය

කුබර්නෙටස් තුළ රූක්ගේ වැඩ කටයුතු විශේෂ ක්‍රියාකරුවෙකු මත පදනම් වේ (අපි Kubernetes Operators ගැන වැඩි විස්තර ලිව්වා මේ ලිපිය කියවන්න), ගබඩා වින්‍යාසය ස්වයංක්‍රීය කරන අතර එහි අධීක්ෂණය ක්‍රියාත්මක කරයි.

එසේ නම්, Rook ක්රියාකරු ගබඩාව යෙදවීමට සහ පසුව නඩත්තු කිරීමට අවශ්‍ය සියල්ල අඩංගු බහාලුමක් ලෙස පෙනේ. ක්රියාකරුගේ වගකීම්වලට ඇතුළත් වන්නේ:

  • Ceph ගබඩා ඩීමන් සඳහා DaemonSet නිර්මාණය කිරීම (ceph-osd) සරල RADOS පොකුරක් සමඟ;
  • Ceph අධීක්ෂණය සඳහා කරල් නිර්මාණය කිරීම (සිට ceph-mon, පොකුරේ තත්ත්වය පරීක්ෂා කිරීම; ගණපූරණය සඳහා, බොහෝ අවස්ථාවලදී පිටපත් තුනක් යොදවා ඇති අතර, ඒවායින් එකක් වැටුණහොත්, අලුත් එකක් ඉහළ යයි);
  • CRDs කළමනාකරණය (අභිරුචි සම්පත් අර්ථ දැක්වීම්) තමා වෙනුවෙන් පොකුර, ගබඩා තටාක, වස්තු ගබඩා (වස්තු මත PUT/GET ඉටු කරන HTTP ඉල්ලීම් සඳහා වන සම්පත් සහ සේවා කට්ටල - ඒවා S3 සහ Swift API සමඟ අනුකූල වේ), මෙන්ම ගොනු පද්ධති;
  • අවශ්ය සියලුම සේවාවන් දියත් කිරීම සඳහා කරල් ආරම්භ කිරීම;
  • Rook නියෝජිතයන් නිර්මාණය කිරීම.

රූක්ගේ නියෝජිතයන් එක් එක් කුබර්නෙට්ස් නෝඩය මත යොදවා ඇති වෙනම කරල් මගින් නිරූපණය කෙරේ. නියෝජිතයාගේ අරමුණ ප්ලගින වින්‍යාසයයි FlexVolume, එය Kubernetes හි ගබඩා වෙළුම් සඳහා සහය සපයයි. නියෝජිතයා ගබඩාවේ ක්‍රියාකාරිත්වය ක්‍රියාත්මක කරයි: ජාල ගබඩා උපාංග සම්බන්ධ කිරීම, වෙළුම් සවි කිරීම, ගොනු පද්ධතිය ආකෘතිකරණය කිරීම යනාදිය.

Rook - Kubernetes සඳහා ස්වයං සේවා දත්ත ගබඩාවක්
සමස්ත Kubernetes පොකුරු යෝජනා ක්රමය තුළ Rook සංරචකවල ස්ථානය සහ භූමිකාව

Rook ගබඩා වර්ග තුනක් ඉදිරිපත් කරයි:

  1. අවහිර කරන්න (බ්ලොක්, StorageClass) - ගබඩාව තනි උදුනකට සවි කරයි;
  2. වස්තුව (වස්තුව, ObjectStore) - Kubernetes පොකුර ඇතුළත සහ පිටත ලබා ගත හැකිය (S3 API හරහා);
  3. හවුල් ගොනු පද්ධතිය (හවුල් ගොනු පද්ධතිය, Filesystem) යනු පොඩ් කිහිපයකින් කියවීමට සහ ලිවීමට සවි කළ හැකි ගොනු පද්ධතියකි.

Rook හි අභ්යන්තර කොටස් වලට ඇතුළත් වන්නේ:

  • මොන්ස් - Ceph අධීක්ෂණය සඳහා කරල් (දැනටමත් සඳහන් කර ඇති ceph-mon සමඟ);
  • OSDs - ceph-osd ඩීමන් සහිත කරල් (Object Storage Daemons);
  • එම්.ජී.ආර් - යක්ෂයෙකු සමඟ කරල් ceph-mgr (Ceph Manager), බාහිර පද්ධති සඳහා අමතර අධීක්ෂණ හැකියාවන් සහ අතුරු මුහුණත් සපයන (නිරීක්ෂණය/පාලනය);
  • ආර්.ජී.ඩබ්ලිව් (විකල්ප) - වස්තු ගබඩා සහිත කරල්;
  • MDS (විකල්ප) - හවුල් ගොනු පද්ධතියක් සහිත කරල්.

Rook - Kubernetes සඳහා ස්වයං සේවා දත්ත ගබඩාවක්

සියලුම රූක් ඩීමන් (Mons, OSDs, MGR, RGW, MDS) තනි ද්විමයයකට සම්පාදනය කර ඇත (rook) කන්ටේනරයක ධාවනය.

Rook ව්යාපෘතිය පිළිබඳ කෙටි හැඳින්වීමක් සඳහා, මෙම කෙටි (12 විනිවිදක) ද ප්රයෝජනවත් විය හැකිය. ඉදිරිපත් කිරීම Bassam Tabbara (CTO at Quantum Corp) වෙතින්.

Rook ක්රියාත්මක කිරීම

Rook ක්‍රියාකරු Kubernetes අනුවාදය 1.6 සහ ඊට වැඩි ඒවා සඳහා පූර්ණ සහය දක්වයි (සහ, අර්ධ වශයෙන්, පැරණි K8s නිකුතුව - 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-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 GB නිදහස් තැටි ඉඩක් තිබීම නිර්දේශ කරයි.

ඉතිරිව ඇත්තේ වින්‍යාසයෙන් පොකුර සෑදීම සහ පොකුරේ (නාම අවකාශයේ) කරල් නිර්මාණය කර ඇති බවට වග බලා ගැනීමයි. 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 අනුවාදය 0.5.0 සිට 0.5.1 දක්වා යාවත්කාලීන කිරීමේ උදාහරණය භාවිතා කරමින් සවිස්තරාත්මක පියවරෙන් පියවර උපදෙස් සොයාගත හැකිය ව්යාපෘති ලියකියවිලි.

පසුගිය නොවැම්බර් මාසයේ Rook බ්ලොග් අඩවියේ පළ විය සංසන්දනය කාර්ය සාධනය EBS සමඟ. එහි ප්රතිඵල අවධානයට ලක්විය යුතු අතර, කෙටියෙන්, ඒවා පහත පරිදි වේ:

Rook - Kubernetes සඳහා ස්වයං සේවා දත්ත ගබඩාවක්
Rook - Kubernetes සඳහා ස්වයං සේවා දත්ත ගබඩාවක්

අනාගත බලාපොරොත්තු

රූක්ගේ වර්තමාන තත්ත්වය ඇල්ෆා වන අතර, අද දක්වා ඇති නවතම ප්‍රධාන නිකුතුව වේ අනුවාදය 0.6, 2017 නොවැම්බර් මස නිකුත් කරන ලදී (වත්මන් නිවැරදි කිරීම - v0.6.2 - දෙසැම්බර් 14 නිකුත් විය). දැනටමත් 2018 පළමු භාගයේදී, වඩාත් පරිණත අනුවාද නිකුත් කිරීම් අපේක්ෂා කෙරේ: බීටා සහ ස්ථාවර (නිෂ්පාදනය සඳහා නිල වශයෙන් සූදානම්).

අනුව මාර්ග සිතියමයි ව්‍යාපෘතිය, සංවර්ධකයින්ට අවම වශයෙන් ඊළඟ නිකුතු දෙක තුළ රූක් සංවර්ධනය සඳහා සවිස්තරාත්මක දැක්මක් ඇත: 0.7 (එහි සූදානම GitHub ට්‍රැකර් හි ඇත ඇගයීමට ලක් කෙරේ 60% ලෙස) සහ 0.8. අපේක්ෂිත වෙනස්කම් අතර Ceph Block සහ Ceph Object සඳහා සහය බීටා අනුවාද තත්ත්වයට මාරු කිරීම, CephFS සඳහා වෙළුම්වල ගතික ප්‍රතිපාදන, උසස් ලොග් කිරීමේ පද්ධතියක්, ස්වයංක්‍රීය පොකුරු යාවත්කාලීන කිරීම්, වෙළුම් සඳහා ස්නැප්ෂොට් සඳහා සහය වේ.

රූක් අංකයට ගැනීම CNCF ව්යාපෘති (මෙතෙක් මුල් අවධියේදී - "ආරම්භක මට්ටම" - සමානව සම්බන්ධක и CoreDNS) යනු නිෂ්පාදනයට ඇති උනන්දුව වර්ධනය වන ආකාරයේ සහතිකයකි. ස්ථාවර අනුවාද නිකුත් වූ පසු එය ක්ලවුඩ් යෙදුම් ලෝකයේ අඩිතාලමක් ලබා ගන්නේ කෙසේද යන්න පැහැදිලි වනු ඇත, එය නිසැකවම නව පරීක්ෂකයින් සහ පරිශීලකයින් Rook වෙත ගෙන එනු ඇත.

ප්රාදේශීය සභා

අපගේ බ්ලොග් අඩවියේ ද කියවන්න:

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න