
Uppdatering!. I kommentarerna föreslog en av lÀsarna att jag skulle prova (kanske arbetar han sjÀlv med det), sÄ jag la till en sektion om denna lösning. Jag skrev ocksÄ , eftersom processen skiljer sig mycket frÄn de andra.
Om jag ska vara Àrlig gav jag upp och avstod frÄn (Ätminstone för tillfÀllet). Jag kommer att anvÀnda . Varför? PÄ grund av lagring! Vem kunde tro att jag skulle pyssla mer med lagringslösningar Àn med Kubernetes sjÀlv. Jag anvÀnder , eftersom det Àr prisvÀrt och prestandan Àr bra, och jag har frÄn början distribuerat kluster med hjÀlp av . Jag har inte provat de hanterade Kubernetes-tjÀnsterna frÄn Google/Amazon/Microsoft/DigitalOcean och sÄ vidare, eftersom jag ville lÀra mig allt sjÀlv. Och dessutom Àr jag sparsam.
SĂ„ ja, jag har lagt ner mycket tid pĂ„ att försöka bestĂ€mma vilken lagring jag skulle vĂ€lja nĂ€r jag planerade den möjliga stacken för Kubernetes. Jag föredrar lösningar med öppen kĂ€llkod, inte bara pĂ„ grund av priset, men jag har ocksĂ„ undersökt ett par betalda alternativ av nyfikenhet, eftersom de har gratisversioner med begrĂ€nsningar. Jag noterade nĂ„gra siffror frĂ„n de senaste testerna nĂ€r jag jĂ€mförde olika alternativ, och de kan intressera dem som studerar lagring i Kubernetes. Ăven om jag personligen har sagt adjö till Kubernetes för tillfĂ€llet. Jag vill ocksĂ„ nĂ€mna , dĂ€r man direkt kan förbereda volymer i Hetzner Cloud, men jag har inte provat den Ă€n. Jag har undersökt molnbaserade programvarudefinierade lagringslösningar, eftersom jag behövde replikering och möjlighet att snabbt ansluta permanenta volymer pĂ„ vilken nod som helst, sĂ€rskilt i hĂ€ndelse av nodfel och liknande situationer. Vissa lösningar erbjuder snapshots vid en viss tidpunkt och off-site sĂ€kerhetskopior, vilket Ă€r praktiskt.
Jag har testat 6â7 lagringslösningar:
Som jag nÀmnde , efter att ha testat de flesta alternativ frÄn listan, valde jag först OpenEBS. OpenEBS Àr vÀldigt enkelt att installera och anvÀnda, men Àrligt talat, efter tester med verkliga data under belastning, blev jag besviken pÄ dess prestanda. Det Àr öppen kÀllkod, och utvecklarna Àr pÄ sin de har alltid varit till mycket hjÀlp nÀr jag har behövt assistans. TyvÀrr har den mycket lÄg prestanda jÀmfört med andra alternativ, sÄ jag var tvungen att göra testerna pÄ nytt. Just nu har OpenEBS 3 lagringsmotorn, men jag publicerar benchmarkresultaten för cStor. Jag har Ànnu inga siffror för Jiva och LocalPV.
Kort sagt, Jiva Ă€r lite snabbare, och LocalPV Ă€r verkligen snabb, inte sĂ€mre Ă€n benchmarken direkt frĂ„n disken. Problemet med LocalPV Ă€r att Ă„tkomsten bara kan fĂ„s pĂ„ den nod dĂ€r den har förberetts, och det finns ingen replikering. Jag hade vissa problem med att Ă„terstĂ€lla sĂ€kerhetskopior genom pĂ„ den nya klustret eftersom namnen pĂ„ noderna skilde sig Ă„t. NĂ€r det gĂ€ller sĂ€kerhetskopior har cStor , som kan göra off site sĂ€kerhetskopior av snapshot vid en viss tidpunkt, vilket Ă€r bekvĂ€mare Ă€n sĂ€kerhetskopior pĂ„ filnivĂ„ med Velero-Restic. Jag har skrivit , för att enklare hantera sĂ€kerhetskopior och Ă„terstĂ€llningar med denna plugin. Sammanfattningsvis gillar jag OpenEBS mycket, men dess prestandaâŠ
Rook har ocksÄ öppen kÀllkod, och det skiljer sig frÄn de andra alternativen pÄ listan genom att det Àr en lagringsorkestrator som utför komplexa uppgifter för lagringshantering med olika backend, exempelvis , och andra, vilket avsevÀrt förenklar arbetet. Jag hade problem med EdgeFS nÀr jag testade det för nÄgra mÄnader sedan, sÄ jag testade frÀmst med Ceph. Ceph erbjuder inte bara blocklagring utan ocksÄ objektslagring som Àr kompatibel med S3/Swift och ett distribuerat filsystem. Vad jag gillar med Ceph Àr möjligheten att sprida data över flera diskar sÄ att volymen kan anvÀnda mer diskutrymme Àn vad som fÄr plats pÄ en enda disk. Det Àr praktiskt. En annan bra funktion Àr nÀr du lÀgger till diskar i klustret, sÄ omfördelar den automatiskt data över alla diskar.
Ceph har snapshots, men sĂ„vitt jag vet kan de inte anvĂ€ndas direkt i Rook/Kubernetes. Dock har jag inte grĂ€vt djupare i det. Men det finns inga off-site-backups, sĂ„ det blir nödvĂ€ndigt att anvĂ€nda nĂ„got som Velero/Restic, men de erbjuder bara filnivĂ„-backups, inte snapshots vid en viss tidpunkt. Dessutom gillade jag verkligen hur enkelt det Ă€r att arbeta med Ceph i Rook â det döljer nĂ€stan alla komplicerade grejer och erbjuder verktyg för att kommunicera med Ceph direkt för felsökning. TyvĂ€rr uppstod alltid , vilket gör att Ceph blir instabilt. Ăn sĂ„ lĂ€nge Ă€r det oklart om det Ă€r en bugg i Ceph sjĂ€lv eller ett problem med hur Rook hanterar Ceph. Jag har lekt med minnesinstĂ€llningarna, och det blev bĂ€ttre, men problemet Ă€r inte helt löst. Ceph har bra prestanda, som syns i benchmarksen nedan. Dessutom har den en bra övervakningspanel.
Jag gillar Longhorn mycket. Jag tycker att det Ă€r en lovande lösning. Utvecklarna sjĂ€lva (Rancher Labs) erkĂ€nner dock att det Ă€nnu inte Ă€r klart för produktionsmiljö, och det mĂ€rks. Det har öppen kĂ€llkod och hyfsad prestanda (Ă€ven om de Ă€nnu inte har arbetat med att optimera den), men volymerna ansluter sig vĂ€ldigt lĂ„ngsamt till podden, och i vĂ€rsta fall tar det 15â16 minuter, sĂ€rskilt efter Ă„terstĂ€llning av en stor backup eller uppgradering av arbetsbelastningen. Det har snapshots och off-site-backups av dessa snapshots, men de gĂ€ller endast volymer, sĂ„ du kommer fortfarande att behöva nĂ„got som Velero för backup av de andra resurserna. Backups och Ă„terstĂ€llningar Ă€r mycket pĂ„litliga, men obscena lĂ„ngsamma. Seriöst, de Ă€r bara absurt lĂ„ngsamma. AnvĂ€ndningen av CPU-resurser och systembelastningen skjuter ofta i höjden nĂ€r man arbetar med medelstora datamĂ€ngder i Longhorn. Det finns en anvĂ€ndarvĂ€nlig övervakningspanel för att hantera Longhorn. Jag har redan sagt att jag gillar Longhorn, men det behöver verkligen förbĂ€ttras.
StorageOS Àr den första betalprodukten i listan. Den har en utvecklarversion med ett begrÀnsat storlek pÄ hanterat lagringsutrymme pÄ 500 GB, men antalet noder verkar inte vara begrÀnsat. I försÀljningsavdelningen sa de att kostnaden börjar frÄn $125 per mÄnad för 1 TB, om jag minns rÀtt. Det finns en grundlÀggande övervakningspanel och en anvÀndarvÀnlig CLI, men prestandan Àr mÀrklig: i vissa benchmarks Àr den helt acceptabel, men i stresstesterna var hastigheten inte alls tillfredsstÀllande. SÄ jag vet inte vad jag ska sÀga. DÀrför har jag inte granskat det sÀrskilt noga. HÀr finns inga off-site-backuper, och man mÄste ocksÄ anvÀnda Velero med Restic för att sÀkerhetskopiera volymer. Konstigt, eftersom produkten Àr betalad. Dessutom verkade utvecklarna inte vara sÀrskilt intresserade av att kommunicera pÄ Slack.
Jag hörde om Robin pĂ„ Reddit frĂ„n deras tekniska chef. Jag hade aldrig hört talas om det tidigare. Kanske för att jag sökte gratislösningar, medan Robin Ă€r betald. De har en ganska generös gratisversion med 10 TB lagring och tre noder. Generellt Ă€r produkten mycket bra och har trevliga funktioner. Det finns en utmĂ€rkt CLI, men det bĂ€sta Ă€r att man kan ta snapshots och sĂ€kerhetskopiera hela applikationen (i resursvĂ€ljaren kallas detta för Helm-releaser eller "flex apps"), inklusive volymer och andra resurser, sĂ„ att man kan klara sig utan Velero. Och allt skulle vara fantastiskt om det inte vore för en liten detalj: om man ska Ă„terstĂ€lla (eller "importera", som det kallas i Robin) applikationen pĂ„ en ny kluster â till exempel i hĂ€ndelse av katastrofĂ„terstĂ€llning â sĂ„ fungerar Ă„terstĂ€llningen, men man kan tyvĂ€rr inte fortsĂ€tta med sĂ€kerhetskopieringen av applikationen. I denna release Ă€r det helt enkelt omöjligt, och utvecklarna har bekrĂ€ftat detta. Det Ă€r, milt sagt, konstigt, sĂ€rskilt med tanke pĂ„ de andra fördelarna (till exempel otroligt snabba sĂ€kerhetskopieringar och Ă„terstĂ€llningar). Utvecklarna lovar att allt kommer att Ă„tgĂ€rdas i nĂ€sta release. Prestandan Ă€r överlag bra, men jag mĂ€rkte en avvikelse: om man kör en benchmark direkt pĂ„ volymen som Ă€r ansluten till vĂ€rden, sĂ„ Ă€r lĂ€shastigheten mycket högre Ă€n pĂ„ samma volym inuti podden. Alla andra resultat Ă€r identiska, men teoretiskt sett borde det inte finnas nĂ„gon skillnad. Ăven om de arbetar pĂ„ det hĂ€r, blev jag besviken över problemet med Ă„terstĂ€llning och sĂ€kerhetskopiering â jag kĂ€nde att jag Ă€ntligen hade hittat en lĂ€mplig lösning, och jag var till och med redo att betala för den nĂ€r jag behövde mer utrymme eller fler servrar.
HÀr har jag inte mycket att sÀga. Det hÀr Àr en betald produkt, bÄde imponerande och dyr. Prestandan Àr fantastisk. Hittills Àr detta den bÀsta indikatorn. I Slack fick jag veta att priset börjar frÄn $205 per mÄnad för en nod, enligt vad som anges i Google GKE Marketplace. Jag vet inte om det blir billigare om man köper direkt. Hur som helst, jag har inte rÄd med det, sÄ jag blev mycket besviken över att utvecklarlicensen (upp till 1 TB och 3 noder) Àr praktiskt taget vÀrdelös med Kubernetes, om man inte Àr nöjd med statisk beredning. Jag hoppades att företagslicensen automatiskt skulle sÀnkas till utvecklarlicens vid slutet av provperioden, men sÄ blev det inte. Utvecklarlicensen kan endast anvÀndas direkt med Docker, och att stÀlla in det i Kubernetes Àr mycket besvÀrligt och begrÀnsat. Jag föredrar sjÀlvklart öppen kÀllkod, men om jag hade pengarna skulle jag absolut vÀlja Portworx. Hittills kan dess prestanda helt enkelt inte jÀmföras med andra alternativ.
Jag lade till denna del efter att inlÀgget publicerades, nÀr en lÀsare föreslog att jag skulle testa Linstor. Jag provade det och gillade det! Men det finns mer att utforska. Just nu kan jag sÀga att prestandan Àr ganska bra (benchmarkresultaten Àr tillagda nedan). I grund och botten fick jag samma prestanda som för disken direkt, helt utan förluster. (FrÄga inte varför Portworx har bÀttre siffror Àn benchmarken för disken direkt. Jag har ingen aning. Magi, kanske.) SÄ Linstor verkar för nÀrvarande mycket effektivt. Att installera det Àr inte precis svÄrt, men inte sÄ enkelt som andra alternativ. Först var jag tvungen att installera Linstor (kernmodul och verktyg/tjÀnster) och konfigurera LVM för thin provisioning och snapshotstöd utanför Kubernetes, direkt pÄ vÀrden, och sedan skapa de resurser som behövs för att anvÀnda lagring frÄn Kubernetes. Jag gillade inte att det inte fungerade pÄ CentOS och att jag var tvungen att anvÀnda Ubuntu. Det Àr inte farligt, förstÄs, men lite frustrerande, eftersom dokumentationen (som för övrigt Àr utmÀrkt) nÀmner flera paket som Àr omöjliga att hitta i de angivna Epel-repositories. I Linstor finns det snapshots, men inga off-site sÀkerhetskopior, sÄ hÀr var jag tvungen att anvÀnda Velero med Restic för att sÀkerhetskopiera volymer. Jag skulle föredra snapshots istÀllet för filsystemnivÄ-sÀkerhetskopior, men det gÄr att leva med om lösningen Àr prestandamÀssig och pÄlitlig. Linstor Àr öppen kÀllkod, men det finns betald support. Om jag förstÄr det rÀtt kan det anvÀndas utan begrÀnsningar, Àven om du inte har nÄgot supportavtal, men det behöver bekrÀftas. Jag vet inte hur vÀl Linstor Àr testat för Kubernetes, men sjÀlva lagringsnivÄn ligger utanför Kubernetes och, som det verkar, har lösningen funnits ett tag, sÄ den har nog testats i praktiken. Finns det en lösning hÀr som fÄr mig att tÀnka om och ÄtervÀnda till Kubernetes? Jag vet inte, jag vet inte. Jag behöver utforska mer, studera replikering. Vi fÄr se. Men det första intrycket Àr bra. Jag skulle helt klart föredra att anvÀnda mina egna Kubernetes-kluster istÀllet för Heroku för att fÄ mer frihet och lÀra mig nytt. Eftersom Linstor inte installeras lika enkelt som andra, kommer jag snart att skriva ett inlÀgg om det.
Benchmarking
TyvÀrr har jag sparat fÄ jÀmförelsetal eftersom jag inte trodde att jag skulle skriva om detta. Jag har endast resultaten frÄn grundlÀggande fio-benchmarktester och bara för kluster med en nod, sÄ jag har inga siffror för replikerade konfigurationer Ànnu. Men baserat pÄ dessa resultat kan man fÄ en ungefÀrlig uppfattning om vad man kan förvÀnta sig av varje alternativ, eftersom jag jÀmförde dem pÄ identiska molnservrar, 4 kÀrnor, 16 GB RAM, med en extra 100 GB disk för de testade volymerna. Jag körde benchmarktester tre gÄnger för varje lösning och berÀknade det genomsnittliga resultatet, plus att jag ÄterstÀllde serverinstÀllningarna för varje produkt. Allt detta Àr helt ovetenskapligt, bara sÄ att ni fÄr en allmÀn uppfattning. I andra tester kopierade jag 38 GB bilder och videor mellan volymen för att testa lÀs- och skrivprestanda, men tyvÀrr har jag inte sparat siffrorna. Kort sagt, Portworx var mycket snabbare.
För volymbenchmarken anvÀnde jag denna manifestfil:
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: 4Först skapade jag en volym med motsvarande lagringsklass och sedan körde jag en uppgift med fio i bakgrunden. Jag valde 1 GB för att uppskatta prestandan och inte behöva vÀnta för lÀnge. HÀr Àr resultaten:
Jag har markerat det bÀsta vÀrdet för varje mÀtning i grönt och det sÀmsta i rött.
Slutsats
Som ni kan se presterade Portworx generellt bÀttre Àn de andra. Men för mig Àr det dyrt. Jag vet inte vad Robin kostar, men de har en utmÀrkt gratisversion, sÄ om du behöver en betald produkt kan du prova (hoppas de snart löser problemet med ÄterstÀllning och backup). Av de tre gratisalternativen har jag haft minst problem med OpenEBS, men dess prestanda Àr undermÄlig. TyvÀrr har jag inte sparat fler resultat, men jag hoppas att de siffror och kommentarer jag har kan hjÀlpa er.
KĂ€lla: habr.com
