Ir vairÄki veidi, kÄ konfigurÄt datu krÄtuvi lietojumprogrammÄm, kas darbojas Kubernetes klasterÄ«. Daži no tiem jau ir novecojuÅ”i, citi parÄdÄ«jÄs pavisam nesen. Å ajÄ rakstÄ mÄs aplÅ«kosim trÄ«s uzglabÄÅ”anas sistÄmu savienoÅ”anas iespÄju koncepciju, tostarp visjaunÄko ā savienojumu, izmantojot konteineru krÄtuves interfeisu.
1. metode: norÄdiet PV pod manifestÄ
Tipisks manifests, kas apraksta pÄksti Kubernetes klasterÄ«:
Manifesta daļas, kas apraksta, kurÅ” sÄjums ir savienots un kur ir izceltas ar krÄsu.
IedaÄ¼Ä tilpumsMounts norÄdiet piestiprinÄÅ”anas punktus (mountPath) - kurÄ konteinera iekÅ”ienÄ direktorijÄ tiks uzstÄdÄ«ts pastÄvÄ«gais sÄjums, kÄ arÄ« sÄjuma nosaukumu.
IedaÄ¼Ä x uzskaitÄ«ti visi sÄjumi, kas tiek izmantoti podÄ. NorÄdiet katra sÄjuma nosaukumu, kÄ arÄ« veidu (mÅ«su gadÄ«jumÄ: awsElasticBlockStore) un savienojuma parametrus. Kuri parametri ir norÄdÄ«ti manifestÄ, ir atkarÄ«gi no sÄjuma veida.
Vienu un to paÅ”u tilpumu var uzstÄdÄ«t vienlaicÄ«gi vairÄkos pod konteineros. TÄdÄ veidÄ dažÄdi lietojumprogrammu procesi var piekļūt vieniem un tiem paÅ”iem datiem.
Å Ä« savienojuma metode tika izgudrota paÅ”Ä sÄkumÄ, kad Kubernetes bija tikai sÄkuma stadijÄ, un Å”odien Ŕī metode ir novecojusi.
Lietojot to, rodas vairÄkas problÄmas:
- visi sÄjumi jÄveido manuÄli; Kubernetes mums neko nevar izveidot;
- piekļuves parametri katram sÄjumam ir unikÄli, un tie ir jÄnorÄda visu sÄjumu izmantojoÅ”o podiÅu manifestos;
- lai mainÄ«tu krÄtuves sistÄmu (piemÄram, pÄrietu no AWS uz Google Cloud), visos manifestos ir jÄmaina uzstÄdÄ«to sÄjumu iestatÄ«jumi un veids.
Tas viss ir ļoti neÄrti, tÄpÄc patiesÄ«bÄ Å”Ä« metode tiek izmantota, lai savienotu tikai dažus Ä«paÅ”us sÄjumu veidus: configMap, secret, emptyDir, hostPath:
-
configMap un secret ir pakalpojumu sÄjumi, kas ļauj izveidot sÄjumu ar failiem no Kubernetes manifestiem konteinerÄ.
-
emptyDir ir pagaidu sÄjums, kas izveidots tikai podziÅas darbÄ«bas laikÄ. Ärti lietojams pagaidu datu testÄÅ”anai vai glabÄÅ”anai. DzÄÅ”ot podziÅu, tiek izdzÄsts arÄ« tukÅ”ais direktorijas sÄjums un tiek zaudÄti visi dati.
-
hostPath ā ļauj uzstÄdÄ«t jebkuru direktoriju tÄ servera lokÄlajÄ diskÄ, kurÄ darbojas lietojumprogramma, konteinerÄ ar lietojumprogrammu, tostarp /etc/kubernetes. Tas ir nedroÅ”s lÄ«dzeklis, tÄpÄc droŔības politikas parasti aizliedz izmantot Å”Äda veida sÄjumus. PretÄjÄ gadÄ«jumÄ uzbrucÄja lietojumprogramma varÄs ievietot HTC Kubernetes direktoriju savÄ konteinerÄ un nozagt visus klastera sertifikÄtus. Parasti hostPath sÄjumus ir atļauts izmantot tikai sistÄmas lietojumprogrammÄm, kas darbojas kube-system nosaukumvietÄ.
2. metode. Savienojums ar SC/PVC/PV pavardiem
AlternatÄ«va savienojuma metode ir krÄtuves klases, PersistentVolumeClaim, PersistentVolume jÄdziens.
UzglabÄÅ”anas klase saglabÄ savienojuma parametrus datu uzglabÄÅ”anas sistÄmai.
PastÄvÄ«gÄ apjoma prasÄ«ba apraksta prasÄ«bas attiecÄ«bÄ uz to, kas lietojumprogrammai nepiecieÅ”ams.
PastÄvÄ«gs apjoms saglabÄ piekļuves parametrus un skaļuma statusu.
Idejas bÅ«tÄ«ba: pod manifestÄ tie norÄda PersistentVolumeClaim tipa sÄjumu un norÄda Ŕīs entÄ«tijas nosaukumu parametrÄ requestName.
ManifestÄ PersistentVolumeClaim ir aprakstÄ«tas prasÄ«bas attiecÄ«bÄ uz lietojumprogrammai nepiecieÅ”amo datu apjomu. Tostarp:
- diska izmÄrs;
- piekļuves metode: ReadWriteOnce vai ReadWriteMany;
- saite uz Storage class - kurÄ datu glabÄÅ”anas sistÄmÄ vÄlamies izveidot sÄjumu.
KrÄtuves klases manifests saglabÄ savienojuma ar krÄtuves sistÄmu veidu un parametrus. Kubeletam tie ir nepiecieÅ”ami, lai uzstÄdÄ«tu skaļumu savÄ mezglÄ.
PersistentVolume manifesti norÄda krÄtuves klasi un piekļuves parametrus konkrÄtam sÄjumam (sÄjuma ID, ceļŔ utt.).
Veidojot PVC, Kubernetes aplÅ«ko, kÄda izmÄra apjoms un kÄda uzglabÄÅ”anas klase ir nepiecieÅ”ama, un izvÄlas bezmaksas PersistentVolume.
Ja Å”Ädi PV nav pieejami, Kubernetes var palaist Ä«paÅ”u programmu - Provisioner (tÄs nosaukums ir norÄdÄ«ts krÄtuves klasÄ). Å Ä« programma izveido savienojumu ar krÄtuves sistÄmu, izveido vajadzÄ«gÄ izmÄra sÄjumu, saÅem identifikatoru un izveido PersistentVolume manifestu Kubernetes klasterÄ«, kas ir saistÄ«ts ar PersistentVolumeClaim.
Visa Ŕī abstrakciju kopa ļauj noÅemt informÄciju par to, ar kuru krÄtuves sistÄmu lietojumprogramma strÄdÄ, no lietojumprogrammas manifesta lÄ«meÅa uz administrÄÅ”anas lÄ«meni.
Visi parametri pieslÄgÅ”anai datu glabÄÅ”anas sistÄmai atrodas Storage klasÄ, par ko ir atbildÄ«gi klasteru administratori. Viss, kas jums jÄdara, pÄrejot no AWS uz Google Cloud, ir jÄmaina krÄtuves klases nosaukums uz PVC lietojumprogrammas manifestos. NoturÄ«bas apjoms datu glabÄÅ”anai tiks izveidots klasterÄ« automÄtiski, izmantojot programmu Provisioner.
3. metode. Konteinera glabÄÅ”anas interfeiss
Viss kods, kas mijiedarbojas ar dažÄdÄm uzglabÄÅ”anas sistÄmÄm, ir daļa no Kubernetes kodola. Kļūdu labojumu vai jaunu funkcionalitÄtes izlaiÅ”ana ir saistÄ«ta ar jauniem laidieniem; kods ir jÄmaina visÄm atbalstÄ«tajÄm Kubernetes versijÄm. To visu ir grÅ«ti uzturÄt un pievienot jaunas funkcijas.
Lai atrisinÄtu problÄmu, izstrÄdÄtÄji no Cloud Foundry, Kubernetes, Mesos un Docker izveidoja Container Storage Interface (CSI) - vienkÄrÅ”u vienotu saskarni, kas apraksta konteineru pÄrvaldÄ«bas sistÄmas un Ä«paÅ”a draivera (CSI Driver) mijiedarbÄ«bu, kas darbojas ar noteiktu uzglabÄÅ”anas sistÄma. Viss kods mijiedarbÄ«bai ar uzglabÄÅ”anas sistÄmÄm tika pÄrvietots no Kubernetes kodola uz atseviŔķu sistÄmu.
Parasti CSI draiveris sastÄv no diviem komponentiem: Node Plugin un Controller spraudnis.
Node Plugin darbojas katrÄ mezglÄ un ir atbildÄ«gs par apjomu montÄžu un darbÄ«bu veikÅ”anu ar tiem. Controller spraudnis mijiedarbojas ar krÄtuves sistÄmu: izveido vai dzÄÅ” sÄjumus, pieŔķir piekļuves tiesÄ«bas utt.
PagaidÄm vecie draiveri paliek Kubernetes kodolÄ, taÄu tos vairs nav ieteicams lietot un ikvienam ir ieteicams instalÄt CSI draiveri tieÅ”i sistÄmai, ar kuru viÅi strÄdÄs.
InovÄcija var biedÄt tos, kuri jau ir pieraduÅ”i izveidot datu glabÄtuvi caur Storage klasi, taÄu patiesÄ«bÄ nekas briesmÄ«gs nav noticis. ProgrammÄtÄjiem nekas Ä«sti nemainÄs ā viÅi ir strÄdÄjuÅ”i tikai ar nosaukumu Storage class, un turpinÄs to darÄ«t. Administratoriem ir pievienota stÅ«res diagrammas instalÄcija un mainÄ«ta iestatÄ«jumu struktÅ«ra. Ja iepriekÅ” iestatÄ«jumi tika ievadÄ«ti tieÅ”i krÄtuves klasÄ, tagad tie vispirms jÄiestata stÅ«res diagrammÄ un pÄc tam krÄtuves klasÄ. Ja paskatÄs, nekas slikts nav noticis.
Å emsim piemÄru, lai apskatÄ«tu priekÅ”rocÄ«bas, ko varat iegÅ«t, pÄrejot uz Ceph uzglabÄÅ”anas sistÄmu pievienoÅ”anu, izmantojot CSI draiveri.
StrÄdÄjot ar Ceph, CSI spraudnis nodroÅ”ina vairÄk iespÄju darbam ar uzglabÄÅ”anas sistÄmÄm nekÄ iebÅ«vÄtie draiveri.
- DinamiskÄ diska izveide. Parasti RBD diski tiek izmantoti tikai RWO režīmÄ, bet CSI for Ceph ļauj tos izmantot RWX režīmÄ. VairÄki podi dažÄdos mezglos var uzstÄdÄ«t vienu un to paÅ”u RDB disku savos mezglos un strÄdÄt ar tiem paralÄli. TaisnÄ«bas labad jÄsaka, ka ne viss ir tik spilgti ā Å”o disku var pieslÄgt tikai kÄ blokierÄ«ci, kas nozÄ«mÄ, ka bÅ«s jÄpielÄgo aplikÄcija darbam ar to vairÄkkÄrtÄjas piekļuves režīmÄ.
- MomentuzÅÄmumu izveide. Kubernetes klasterÄ« varat izveidot manifestu ar prasÄ«bu izveidot momentuzÅÄmumu. CSI spraudnis to redzÄs un veiks momentuzÅÄmumu no diska. Pamatojoties uz to, varat izveidot PersistentVolume dublÄjumu vai kopiju.
- Diska izmÄra palielinÄÅ”ana par krÄtuvi un PersistentVolume Kubernetes klasterÄ«.
- Kvotas. Kubernetes iebÅ«vÄtie CephFS draiveri neatbalsta kvotas, taÄu jauni CSI spraudÅi ar jaunÄko Ceph Nautilus var iespÄjot kvotas CephFS nodalÄ«jumos.
- Metrika. CSI spraudnis var nodroÅ”inÄt Prometheus dažÄdus rÄdÄ«tÄjus par to, kuri sÄjumi ir pievienoti, kÄdi sakari notiek utt.
- ApzinÄs topoloÄ£iju. Ä»auj manifestos norÄdÄ«t, kÄ klasteris ir Ä£eogrÄfiski sadalÄ«ts, un izvairÄ«ties no AmsterdamÄ esoÅ”Äs krÄtuves sistÄmas savienoÅ”anas ar aplikÄcijÄm, kas darbojas LondonÄ.
KÄ savienot Ceph ar Kubernetes klasteru, izmantojot CSI, skatiet
Raksta autors: Sergejs Bondarevs, praktizÄjoÅ”ais arhitekts Southbridge, sertificÄts Kubernetes administrators, viens no kubespray izstrÄdÄtÄjiem.
Nedaudz Post Scriptum nevis reklÄmai, bet labumam...
PS Sergejs Bondarevs vada divus intensÄ«vus kursus: atjauninÄts
Avots: www.habr.com