Lagringslösningar i Kubernetes: OpenEBS vs Rook (Ceph) vs Rancher Longhorn vs StorageOS vs Robin vs Portworx vs Linstor

Lagringslösningar i Kubernetes: OpenEBS vs Rook (Ceph) vs Rancher Longhorn vs StorageOS vs Robin vs Portworx vs Linstor

Uppdatering!. I kommentarerna föreslog en av lÀsarna att jag skulle prova Linstor (kanske arbetar han sjÀlv med det), sÄ jag la till en sektion om denna lösning. Jag skrev ocksÄ ett inlÀgg om hur man installerar det, eftersom processen skiljer sig mycket frÄn de andra.

Om jag ska vara Àrlig gav jag upp och avstod frÄn Kubernetes (Ätminstone för tillfÀllet). Jag kommer att anvÀnda Heroku. 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 Hetzner Cloud, eftersom det Àr prisvÀrt och prestandan Àr bra, och jag har frÄn början distribuerat kluster med hjÀlp av Rancher. 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 CSI-drivrutinen, 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:

OpenEBS

Som jag nÀmnde i det föregÄende inlÀgget, 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 Slack-kanal 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 Velero pĂ„ den nya klustret eftersom namnen pĂ„ noderna skilde sig Ă„t. NĂ€r det gĂ€ller sĂ€kerhetskopior har cStor en plugin för Velero, 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 nĂ„gra skript, för att enklare hantera sĂ€kerhetskopior och Ă„terstĂ€llningar med denna plugin. Sammanfattningsvis gillar jag OpenEBS mycket, men dess prestanda


Rook

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 Ceph, EdgeFS 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 detta problem, 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.

Rancher Longhorn

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

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.

Robin

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.

Portworx

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.

Linstor

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: 4

Fö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:

Lagringslösningar i Kubernetes: OpenEBS vs Rook (Ceph) vs Rancher Longhorn vs StorageOS vs Robin vs Portworx vs Linstor

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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster