
Risi!. Në komentet, një nga lexuesit sugjeroi të provohej (ndoshta ai po punon me të vetë), prandaj e shtova një seksion në lidhje me këtë zgjidhje. Gjithashtu shkruaja , sepse procesi është shumë ndryshe nga të tjerët.
Po të jetë e sinqertë, unë u dorëzova dhe hoqa dorë nga (sidoqoftë, për tani). Do të përdor . Pse? Për shkak të ruajtjes! Kush mund të mendonte që do të merresha më shumë me ruajtjet sesa me Kubernetes vetë. Unë po përdor , sepse është e përballueshme dhe performanca është e mirë, dhe që nga fillimi unë kam përgatitur klasterë me ndihmën e . Nuk kam provuar shërbimet e menaxhuara të Kubernetes nga Google/Amazon/Microsoft/DigitalOcean etj., sepse doja të mësoja gjithçka vetë. Gjithashtu, jam kursimtar.
Kështu që po, kalova shumë kohë duke u përpjekur të vendosja se cila ruajtje të zgjidhja, kur po shqyrtoja stakun e mundshëm për Kubernetes. Preferoj zgjidhjet me kod të hapur, dhe jo vetëm për shkak të çmimit, por gjithashtu kam shqyrtuar disa opsione të paguara nga kurioziteti, sepse ata kanë versione falas me kufizime. Kam marrë disa shifra nga testet e fundit, kur krahasoja opsionet e ndryshme dhe ato mund të jenë interesante për ata që studiojnë ruajtjen në Kubernetes. Megjithatë, personalisht, unë tani kam hequr dorë nga Kubernetes. Dua gjithashtu të përmend , me të cilin mund të përgatis lloje Hetzner Cloud direkt, por nuk e kam provuar ende. Kam bërë hulumtime për ruajtjet e definuara nga programi në cloud, sepse më nevojitej replikimi dhe mundësia për të lidhur shpejt lloje të përhershme në çdo nodë, veçanërisht në rast të dështimit të nodave dhe situatave të ngjashme. Disa zgjidhje ofrojnë snapse në kohë dhe backupe off site, që është e leverdisshme.
Kam testuar 6-7 zgjidhje për ruajtje:
, siç e thashë më parë, pasi kam testuar shumicën e opsioneve nga lista, fillimisht u ndala te OpenEBS. OpenEBS është shumë e lehtë për tu instaluar dhe përdorur, por, për të qenë e sinqertë, pas testeve me të dhëna reale nën ngarkesë, performanca e tij më zhgënjeu. Ky është një projekt me kod të hapur dhe zhvilluesit në kanalin e tyre , pasi që provoi shumicën e mundësive nga lista, në fillim u ndala te OpenEBS. OpenEBS është shumë e lehtë për t'u instaluar dhe përdorur, por, për të qenë e sinqertë, pas testeve me të dhëna reale nën ngarkesë, performanca e tij më zhgënjeu. Ky është një projekt me burim të hapur, dhe zhvilluesit e tij janë gjithmonë më ndihmonin kur kisha nevojë për asistencë. Fatkeqësisht, ka performancë shumë të ulët në krahasim me opsionet e tjera, prandaj isha i detyruar të bëja testet përsëri. Tani OpenEBS ka 3 motorë ruajtje, por unë po publikoj rezultatet e benchmark për cStor. Nuk kam të dhëna për Jiva dhe LocalPV.
Me fjalë të thjeshta, Jiva është pak më e shpejtë, ndersa LocalPV është ndoshta më e shpejtë, pa asnjësoj, se benchmarku i diskut që i ka drejtpërdrejt. Problemi me LocalPV është se mund të qaseni në atë vetëm në nodën ku është përgatitur, dhe nuk ka replikim të asnjë lloji. Kam pasur disa probleme me rikuperimin e backuput përmes në një klaster të ri, sepse emrat e nodave ishin të ndryshëm. Kur bëhet fjalë për backupe, cStor ka , me të cilin mund të bëni backupe off site të snapseve në kohë, që është më e lehtë sesa backupe në nivelin e skedareve me Velero-Restic. Unë shkrova , për ta bërë më të lehtë menaxhimin e backupeve dhe rikuperimeve me këtë plugin. Në përgjithësi, më pëlqen shumë OpenEBS, por performanca e tij…
Rook gjithashtu ka kod të hapur, dhe përveç opsioneve të tjera në listë, dallohet si një orkestrim ruajtjeje që kryen detyra të komplikuara për menaxhimin e ruajtjes me backend të ndryshëm, siç është , dhe të tjerë, që e bën punën shumë më të lehtë. Kam pasur probleme me EfgeFS kur e provova disa muaj më parë, kështu që kam testuar kryesisht me Ceph. Ceph ofron jo vetëm ruajtje blloqesh, por edhe ruajtje objektesh, e cila është e përputhshme me S3/Swift dhe sistemin e skedarëve të shpërndarë. Ajo që më pëlqen te Ceph është mundësia për të shpërndarë të dhënat e llojeve në disa disqe, që lloji të përdorë më shumë hapësirë ruajtjeje sesa mund të përmbajë një disk i vetëm. Kjo është shumë e dobishme. Një tjetër funksion i shkëlqyer është kur shtoni disqe në klaster, ai automatikisht ri-shpërndan të dhënat në të gjithë disqet.
Në Ceph ka snapse, por, sa di unë, ato nuk mund të përdoren direkt në Rook/Kubernetes. Sidoqoftë, nuk kam hyrë thellë në këtë. Ndërkohë, nuk ka backupe off site, kështu që do të duhet të përdorni diçka me Velero/Restic, por këtu vetëm backupe në nivelin e skedareve, e jo snapse në kohë. Megjithatë, në Rook më ka pëlqyer shumë puna e thjeshtë me Ceph - ai fsheh pothuajse të gjitha gjërat e komplikuara dhe ofron mjete për të komunikuar me Ceph drejtpërdrejt për diagnostikim. Fatkeqësisht, gjatë testeve të stresit të volumeve të Ceph, kam pasur vazhdimisht , për të cilin Ceph bëhet i paqëndrueshëm. Deri tani nuk është e qartë nëse është një gabim në vetë Ceph apo në mënyrën se si Rook menaxhon Ceph. Kam bërë disa ndryshime në konfigurimet e memories dhe situata përmirësua, por problemi nuk u zgjidh plotësisht. Ceph ka një performancë të mirë, siç e tregon benchmarket më poshtë. Gjithashtu, ka një panel të mirë monitorimi.
Më pëlqen shumë Longhorn. Më duket se është një zgjidhje e qëlluar. Megjithatë, vetë zhvilluesit (Rancher Labs) pranojnë se për ambientin e punës nuk është ende i përshtatshëm, dhe kjo duket. Ka kod të hapur dhe performancë të mirë (edhe pse optimizimi nuk është bërë ende), por volume janë shumë të ngadalta në lidhje me podin, dhe në rastet më të këqija, mund të zgjasë 15–16 minuta, veçanërisht pas rikthimit të një backup-i të madh ose përmirësimit të ngarkesës së punës. Ka snapshot-e dhe backup-e jashtë për këto snapshot-e, por ato përfshihen vetëm për volume, prandaj gjithsesi do t'ju duhet diçka si Velero për backup-in e burimeve të tjera. Backup-et dhe rikthimet janë shumë të besueshme, por jashtëzakonisht të ngadalta. Serious, thjesht jashtëzakonisht të ngadalta. Përdorimi i burimeve të procesorit dhe ngarkesa e sistemit shpesh rriten gjatë punës me të dhëna me volum të mesëm në Longhorn. Ka një panel monitorimi të dobishëm për të menaxhuar Longhorn. Kam thënë tashmë se më pëlqen Longhorn, por kërkon punë të madhe.
StorageOS është prodhimi i parë me pagesë në listë. Ka një version për zhvillues me një madhësi të kufizuar të ruajtjes që menaxhohet prej 500 GB, por numri i nyjeve nuk është mendoj i kufizuar. Në departamentin e shitjeve më thanë se çmimi fillon nga $125 në muaj për 1 TB, nëse e mbaj mend saktë. Ka një panel monitorimi bazë dhe një CLI të dobishëm, por me performancën ndodhin gjëra të çuditshme: në disa benchmarke ajo është mjaft e pranueshme, por në testin e stresit të volumeve shpejtësia nuk më pëlqeu fare. Në përgjithësi, nuk di çfarë të them. Prandaj nuk më ndoqi shumë. Nuk ka backup-e jashtë dhe do të duhet gjithashtu të përdorni Velero me Restic për backupin e volumeve. E çuditshme, pasi prodhimi është me pagesë. Po ashtu, zhvilluesit nuk ishin shumë të interesuar për të komunikuar në Slack.
Më përmendi Robin në Reddit nga drejtori i tyre teknik. Nuk kisha dëgjuar më parë për të. Ndoshta sepse po kërkoja zgjidhje falas, ndryshe nga Robin që është me pagesë. Ata kanë një version falas mjaft bujar me ruajtje prej 10 TB dhe tre nyje. Në përgjithësi, produkti është mjaft i mirë dhe me funksionalitete të këndshme. Ka një CLI të shkëlqyer, por ajo që është më e mira është se mund të bëni snapshot dhe backup të gjithë aplikacionit (në selektorin e burimeve quhet lëshime Helm ose "flex apps"), duke përfshirë volume dhe burime të tjera, kështu që mund të shmangni Velero. Dhe gjithçka do të ishte e shkëlqyer, nëse nuk do të kishte një detaj të vogël: nëse rikthen (ose "importon", siç quhet në Robin) aplikacionin në një klaster të ri—për shembull, në rastin e rikthimit pas një aksidenti—rikthimi, natyrisht, funksionon, por nuk mund të vazhdohet backupi i aplikacionit. Në këtë lëshim, kjo thjesht nuk është e mundur, dhe zhvilluesit e konfirmuan. Kjo, lehtësisht, është çuditshme, veçanërisht duke marrë parasysh avantazhet e tjera (për shembull, backupet dhe rikthimet jashtëzakonisht të shpejta). Zhvilluesit premtojnë të rregullojnë gjithçka për lëshimin e ardhshëm. Performanca, në tërësi, është e mirë, por kam vënë re një çuditësi: nëse nisni një benchmark direkt në volumin e lidhur me hostin, shpejtësia e leximit është shumë më e lartë se sa në të njëjtin volum, por brenda podit. Të gjithë rezultatet e tjera janë identike, por teorikisht nuk duhet të ketë ndryshim. Edhe pse ata po punojnë mbi këtë, isha i mërzitur për problemin me rikthimin dhe backup-in—më dukej se përfundimisht e kisha gjetur zgjidhjen e duhur, dhe isha madje i gatshëm të paguaja për të, kur do të më duhej më shumë hapësirë ose më shumë serverë.
Këtu nuk kam shumë për të thënë. Ky është një produkt me pagesë, po aq të mrekullueshëm sa dhe të shtrenjtë. Performanca është thjesht e mahnitshme. Deri tani, kjo është treguesi më i mirë. Në Slack më thanë se çmimi fillon nga $205 në muaj për nod, siç është specifikuar në tregun GKE të Google. Nuk e di nëse do të jetë më lirë nëse blihet drejtperdrejt. Në çdo rast, nuk mund ta lejoj veten një diçka të tillë, kështu që isha shumë i zhgënjyer që licenca e zhvilluesit (për deri në 1 TB dhe 3 nod) është praktikisht e pavlerë me Kubernetes, nëse nuk jeni të kënaqur me përgatitjen statike. Shpresoja që licenca korporative të zvogëlohej automatikisht në nivelin e zhvilluesit pas periudhës së provës, por nuk ndodhi. Licenca e zhvilluesit mund të përdoret vetëm drejtperdrejt me Docker, dhe konfigurimi në Kubernetes është shumë i rëndë dhe i kufizuar. Sigurisht, preferoj burimin e hapur, por nëse do të kisha para, do ta zgjedhja Portworx. Deri tani, performanca e tij është thjesht e pakrahasueshme me opsionet e tjera.
E kam shtuar këtë seksion pas publikimit të postit, kur një lexues sugjeroi të provonim Linstor. E provova dhe më pëlqeu! Por duhet të ndaj më shumë kohë për të studiuar. Tani mund të them se performanca nuk është e keqe (rezultatet e benchmarkut i kam shtuar më poshtë). Në thelb, kam marrë të njëjtën performancë si për disksin direkt, pa asnjë humbje. (Mos pyetni pse Portworx ka numra më të mirë se benchmarku i disksit direkt. Nuk kam idenë. Magji, ndoshta.) Prandaj, Linstor deri tani duket shumë efikas. Installimi nuk është aq i vështirë, por as aq i lehtë sa opsionet e tjera. Fillimisht më duhet të instaloj Linstor (moduli i kernelit dhe mjetet/ shërbimet) dhe të konfiguroni LVM për thin provisioning dhe mbështetje për snapshots jashtë Kubernetes, direkt në host, dhe pastaj të krijoj burimet e nevojshme për të përdorur depozitat nga Kubernetes. Nuk më pëlqeu që nuk funksionoi në CentOS dhe duhet të përdorja Ubuntu. Nuk është problem, megjithatë, por është pak irritues, sepse në dokumentacion (i cili, për mendimin tim, është i shkëlqyer) përmenden disa paketa që nuk mund të gjej në depozitat e specifikuara Epel. Në Linstor ka snapshots, por nuk ka backup off-site, kështu që përsëri duhet të përdor Velero me Restic për backup të volumet. Do të preferoja snapshots përveç backups në nivelin e skedarëve, por kjo mund të durohet, nëse zgjidhja është efikase dhe e besueshme. Linstor ka kod të hapur, por ofron mbështetje me pagesë. Nëse e kuptoj saktë, mund ta përdorni pa kufizime, edhe nëse nuk keni një marrëveshje mbështetje, por duhet ta sqaroni. Nuk e di se sa e verifikuar është Linstor për Kubernetes, por vetë niveli i ruajtjes është jashtë Kubernetes dhe, sipas dukjes, zgjidhja nuk është krijuar dje, prandaj ndoshta është verifikuar në kushte reale. A ka ndonjë zgjidhje këtu që do të më bëjë të rishikoj dhe të kthehem në Kubernetes? Nuk e di, nuk e di. Duhet ende të hetoj, të shqyrtoj replikimin. Do e shohim. Por përshtypja e parë është e mirë. Unë do të preferoja me siguri të përdorja klastrat e mia të Kubernetes në vend të Heroku, për të fituar më shumë liri dhe për të mësuar diçka të re. Duke qenë se Linstor instalohet jo kaq lehtë si të tjerët, së shpejti do të shkruaj një postim për këtë.
Benchmark
Për fat të keq, kam ruajtur pak shënime mbi krahasimin, sepse nuk mendova se do të shkruaja për këtë. Kam vetëm rezultatet e benchmarkut themelor fio dhe vetëm për klastra me një nod, kështu që për konfigurimet e replikimit nuk kam ende numra. Por nga këto rezultate mund të marrësh një ide të përafërt se çfarë mund të presësh nga secili opsion, sepse i kam krahasuar ato në serverë të njëjtë të cloud, 4 bërthama, 16 GB RAM, me një disk shtesë 100 GB për volumet e testuara. Kam realizuar benchmarket tri herë për çdo zgjidhje dhe kam llogaritur rezultatin mesatar, duke resetuar gjithashtu serverin për çdo produkt. E gjithë kjo nuk është aspak shkencore, thjesht për të kuptuar në mënyrë të përgjithshme. Në teste të tjera kam kopjuar 38 GB foto dhe video nga një volum dhe në atë, për të testuar leximin dhe shkruan, por fatkeqësisht nuk kam ruajtur numrat. Nëse e përmbledh: Portworx ishte shumë më i shpejtë.
Për benchmarkun e volumit përdora këtë manifest:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: dbench
spec:
storageClassName: ...
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: batch/v1
kind: Job
metadata:
name: dbench
spec:
template:
spec:
containers:
- name: dbench
image: sotoaster/dbench:latest
imagePullPolicy: IfNotPresent
env:
- name: DBENCH_MOUNTPOINT
value: /data
- name: FIO_SIZE
value: 1G
volumeMounts:
- name: dbench-pv
mountPath: /data
restartPolicy: Never
volumes:
- name: dbench-pv
persistentVolumeClaim:
claimName: dbench
backoffLimit: 4Fillova fillova fillova fillova.
Fillova fillova fillova fillova.
Përfundimi
Fillova fillova fillova fillova.
Burimi: habr.com
