Storio data mewn clwstwr Kubernetes

Mae yna sawl ffordd o ffurfweddu storfa ddata ar gyfer cymwysiadau sy'n rhedeg ar glwstwr Kubernetes. Mae rhai ohonyn nhw eisoes wedi dyddio, mae eraill wedi ymddangos yn eithaf diweddar. Yn yr erthygl hon, byddwn yn edrych ar y cysyniad o dri opsiwn ar gyfer cysylltu systemau storio, gan gynnwys yr un mwyaf diweddar - cysylltu trwy'r Rhyngwyneb Storio Cynhwysydd.

Storio data mewn clwstwr Kubernetes

Dull 1: Nodwch PV yn y maniffest pod

Maniffest nodweddiadol yn disgrifio pod mewn clwstwr Kubernetes:

Storio data mewn clwstwr Kubernetes

Mae'r rhannau o'r maniffest sy'n disgrifio pa gyfaint sydd wedi'i gysylltu a lle wedi'u hamlygu mewn lliw.

Yn adran cyfaintMounts nodwch y pwyntiau gosod (mountPath) - ym mha gyfeiriadur y tu mewn i'r cynhwysydd y bydd y gyfrol barhaol yn cael ei osod, yn ogystal ag enw'r gyfrol.

Yn adran x yn rhestru'r holl gyfrolau a ddefnyddir yn y pod. Nodwch enw pob cyfrol, yn ogystal â'r math (yn ein hachos ni: awsElasticBlockStore) a pharamedrau cysylltiad. Mae'r paramedrau a restrir yn y maniffest yn dibynnu ar y math o gyfaint.

Gellir gosod yr un cyfaint ar yr un pryd mewn cynwysyddion pod lluosog. Fel hyn, gall gwahanol brosesau cais gael mynediad at yr un data.

Dyfeisiwyd y dull cysylltiad hwn ar y cychwyn cyntaf, pan oedd Kubernetes yn ei fabandod, a heddiw mae'r dull yn hen ffasiwn.

Mae yna nifer o broblemau wrth ei ddefnyddio:

  1. rhaid creu pob cyfrol â llaw; ni all Kubernetes greu unrhyw beth i ni;
  2. mae paramedrau mynediad pob cyfrol yn unigryw, a rhaid eu nodi ym maniffestau pob cod sy'n defnyddio'r gyfrol;
  3. i newid y system storio (er enghraifft, symud o AWS i Google Cloud), mae angen i chi newid y gosodiadau a'r math o gyfrolau wedi'u gosod ym mhob maniffest.

Mae hyn i gyd yn anghyfleus iawn, felly mewn gwirionedd defnyddir y dull hwn i gysylltu rhai mathau arbennig o gyfrolau yn unig: configMap, secret, emptyDir, hostPath:

  • Mae configMap a chyfrinach yn gyfeintiau gwasanaeth sy'n eich galluogi i greu cyfaint gyda ffeiliau o amlygiadau Kubernetes yn y cynhwysydd.

  • Cyfrol dros dro yw emptyDir, wedi'i chreu am oes y pod yn unig. Yn gyfleus i'w ddefnyddio ar gyfer profi neu storio data dros dro. Pan fydd pod yn cael ei ddileu, mae'r gyfrol emptyDir hefyd yn cael ei ddileu ac mae'r holl ddata yn cael ei golli.

  • hostPath - yn caniatáu ichi osod unrhyw gyfeiriadur ar ddisg leol y gweinydd y mae'r rhaglen yn rhedeg arno y tu mewn i'r cynhwysydd gyda'r rhaglen, gan gynnwys /etc/kubernetes. Mae hon yn nodwedd anniogel, felly mae polisïau diogelwch fel arfer yn gwahardd defnyddio cyfeintiau o'r math hwn. Fel arall, bydd cais ymosodwr yn gallu gosod cyfeiriadur HTC Kubernetes y tu mewn i'w gynhwysydd a dwyn yr holl dystysgrifau clwstwr. Yn nodweddiadol, dim ond cymwysiadau system sy'n rhedeg yn y gofod enw system kube y caniateir i gyfeintiau hostPath gael eu defnyddio.

Systemau storio y mae Kubernetes yn gweithio gyda nhw allan o'r bocs yn cael eu rhoi yn y ddogfennaeth.

Dull 2. Cysylltiad ag aelwydydd SC/PVC/PV

Dull cysylltu amgen yw'r cysyniad o ddosbarth Storio, PersistentVolumeClaim, PersistentVolume.

Dosbarth storio yn storio paramedrau cysylltu â'r system storio data.

ClaimCyfrol Parhaus yn disgrifio'r gofynion ar gyfer yr hyn sydd ei angen ar y cais.
Cyfrol Barhaol yn storio paramedrau mynediad a statws cyfaint.

Hanfod y syniad: yn y maniffest pod maent yn dynodi cyfaint o fath PersistentVolumeClaim ac yn dynodi enw'r endid hwn yn y paramedr claimName.

Storio data mewn clwstwr Kubernetes

Mae maniffest PersistentVolumeClaim yn disgrifio'r gofynion ar gyfer maint y data sydd ei angen ar y rhaglen. Gan gynnwys:

  • maint disg;
  • dull mynediad: ReadWriteOnce neu ReadWriteMany;
  • dolen i ddosbarth Storio - ym mha system storio data yr ydym am greu'r cyfaint.

Mae maniffest dosbarth Storio yn storio math a pharamedrau'r cysylltiad â'r system storio. Mae'r cubelet eu hangen i osod y cyfaint ar ei nod.

Mae amlygiadau PersistentVolume yn nodi'r dosbarth Storio a pharamedrau mynediad ar gyfer cyfaint penodol (ID cyfaint, llwybr, ac ati).

Wrth greu PVC, mae Kubernetes yn edrych ar ba gyfaint maint a pha ddosbarth Storio sydd ei angen, ac yn dewis Cyfrol Barhaus am ddim.

Os nad yw PVs o'r fath ar gael, gall Kubernetes lansio rhaglen arbennig - Provider (nodir ei enw yn y dosbarth Storio). Mae'r rhaglen hon yn cysylltu â'r system storio, yn creu cyfaint o'r maint gofynnol, yn derbyn dynodwr ac yn creu maniffest PersistentVolume yng nghlwstwr Kubernetes, sy'n gysylltiedig â'r PersistentVolumeClaim.

Mae'r holl dyniadau niferus hyn yn caniatáu ichi dynnu gwybodaeth am ba system storio y mae'r rhaglen yn gweithio gyda hi o lefel maniffest y cais i'r lefel weinyddol.

Mae'r holl baramedrau ar gyfer cysylltu â'r system storio data wedi'u lleoli yn y dosbarth Storio, y mae gweinyddwyr clwstwr yn gyfrifol amdanynt. Y cyfan sydd angen i chi ei wneud wrth symud o AWS i Google Cloud yw newid enw'r dosbarth Storio i PVC yn y maniffestau cais. Bydd Cyfrol Dyfalbarhad ar gyfer storio data yn cael ei greu yn y clwstwr yn awtomatig gan ddefnyddio'r rhaglen Provider.

Dull 3. Rhyngwyneb Storio Cynhwysydd

Mae'r holl god sy'n rhyngweithio â systemau storio amrywiol yn rhan o graidd Kubernetes. Mae rhyddhau atgyweiriadau nam neu ymarferoldeb newydd yn gysylltiedig â datganiadau newydd; rhaid newid y cod ar gyfer pob fersiwn a gefnogir o Kubernetes. Mae hyn i gyd yn anodd ei gynnal ac ychwanegu ymarferoldeb newydd.

I ddatrys y broblem, creodd datblygwyr o Cloud Foundry, Kubernetes, Mesos a Docker y Rhyngwyneb Storio Cynhwysydd (CSI) - rhyngwyneb unedig syml sy'n disgrifio rhyngweithio'r system rheoli cynwysyddion a gyrrwr arbennig (CSI Driver) sy'n gweithio gyda un penodol. system storio. Symudwyd yr holl god ar gyfer rhyngweithio â systemau storio o graidd Kubernetes i system ar wahân.

Dogfennaeth Rhyngwyneb Storio Cynhwysydd.

Yn nodweddiadol, mae CSI Driver yn cynnwys dwy gydran: Node Plugin ac ategyn Rheolydd.

Mae Node Plugin yn rhedeg ar bob nod ac mae'n gyfrifol am osod cyfeintiau a pherfformio gweithrediadau arnynt. Mae'r ategyn Rheolydd yn rhyngweithio â'r system storio: yn creu neu'n dileu cyfeintiau, yn aseinio hawliau mynediad, ac ati.

Am y tro, mae'r hen yrwyr yn aros yn y cnewyllyn Kubernetes, ond ni argymhellir eu defnyddio mwyach a chynghorir pawb i osod y Gyrrwr CSI yn benodol ar gyfer y system y byddant yn gweithio gyda hi.

Efallai y bydd yr arloesedd yn dychryn y rhai sydd eisoes yn gyfarwydd â sefydlu storio data trwy'r dosbarth Storio, ond mewn gwirionedd nid oes dim byd ofnadwy wedi digwydd. Ar gyfer rhaglenwyr, nid oes dim yn newid mewn gwirionedd - maen nhw wedi gweithio gyda'r enw Storio dosbarth yn unig, a byddant yn parhau i wneud hynny. Ar gyfer gweinyddwyr, mae gosodiad y siart helm wedi'i ychwanegu ac mae strwythur y gosodiadau wedi newid. Os o'r blaen gosodwyd y gosodiadau yn uniongyrchol i'r dosbarth Storio, nawr mae'n rhaid eu gosod yn gyntaf yn y siart helm, ac yna yn y dosbarth Storio. Os edrychwch i mewn iddo, ni ddigwyddodd dim byd drwg.

Gadewch i ni gymryd enghraifft i edrych ar y buddion y gallwch eu cael trwy newid i gysylltu systemau storio Ceph gan ddefnyddio'r gyrrwr CSI.

Wrth weithio gyda Ceph, mae'r ategyn CSI yn darparu mwy o opsiynau ar gyfer gweithio gyda systemau storio na gyrwyr adeiledig.

  1. Creu disg deinamig. Yn nodweddiadol, dim ond yn y modd RWO y defnyddir disgiau RBD, ond mae CSI ar gyfer Ceph yn caniatáu iddynt gael eu defnyddio yn y modd RWX. Gall sawl cod ar wahanol nodau osod yr un ddisg RDB ar eu nodau a gweithio gyda nhw ochr yn ochr. I fod yn deg, nid yw popeth mor llachar - dim ond fel dyfais bloc y gellir cysylltu'r ddisg hon, sy'n golygu y bydd yn rhaid i chi addasu'r cais i weithio gydag ef mewn modd mynediad lluosog.
  2. Creu cipluniau. Mewn clwstwr Kubernetes, gallwch greu maniffest gyda'r gofyniad i greu ciplun. Bydd yr ategyn CSI yn ei weld ac yn cymryd ciplun o'r ddisg. Yn seiliedig arno, gallwch naill ai wneud copi wrth gefn neu gopi o PersistentVolume.
  3. Cynyddu maint disg ar storio a Chyfrol Barhaol mewn clwstwr Kubernetes.
  4. Cwotâu. Nid yw'r gyrwyr CephFS sydd wedi'u hymgorffori yn Kubernetes yn cefnogi cwotâu, ond gall ategion CSI ffres gyda'r Ceph Nautilus diweddaraf alluogi cwotâu ar raniadau CephFS.
  5. Metrigau. Gall yr ategyn CSI ddarparu amrywiaeth o fetrigau i Prometheus ynghylch pa gyfeintiau sydd wedi'u cysylltu, pa gyfathrebiadau sy'n digwydd, ac ati.
  6. Ymwybodol o dopoleg. Yn eich galluogi i nodi mewn maniffestau sut mae'r clwstwr wedi'i ddosbarthu'n ddaearyddol, ac osgoi cysylltu system storio sydd wedi'i lleoli yn Amsterdam i godennau sy'n rhedeg yn Llundain.

Sut i gysylltu Ceph â chlwstwr Kubernetes trwy CSI, gweler yn y rhan ymarferol o ddarlith ysgol nos y Slurm. Gallwch hefyd danysgrifio i Cwrs fideo Ceph, a fydd yn lansio ar Hydref 15fed.

Awdur yr erthygl: Sergey Bondarev, pensaer gweithredol yn Southbridge, Gweinyddwr Kubernetes Ardystiedig, un o ddatblygwyr kubespray.

Ychydig o Post Scriptum nid ar gyfer hysbysebu, ond er budd ...

PS Sergey Bondarev yn arwain dau gwrs dwys: diweddaru Sylfaen Kubernetes Medi 28-30 ac ymlaen Kubernetes Mega Hydref 14–16.

Storio data mewn clwstwr Kubernetes

Ffynhonnell: hab.com

Ychwanegu sylw