Úložisko v Kubernetes: OpenEBS vs Rook (Ceph) vs Rancher Longhorn vs StorageOS vs Robin vs Portworx vs Linstor

Úložisko v Kubernetes: OpenEBS vs Rook (Ceph) vs Rancher Longhorn vs StorageOS vs Robin vs Portworx vs Linstor

Aktualizovať!. V komentároch jeden z čitateľov navrhol vyskúšať Linstor (možno na tom sám pracuje) tak som pridal časť o tomto riešení. aj som pisal príspevok o tom, ako to nainštalovať, pretože proces je veľmi odlišný od ostatných.

Aby som bol úprimný, vzdal som to a vzdal som to Kubernetes (aspoň zatiaľ). budem používať Herok. prečo? Kvôli skladovaniu! Kto by to bol povedal, že sa budem viac motať v úložisku ako v samotnom Kubernetes. používam Hetznerov oblakpretože je to lacné a výkon je dobrý a od samého začiatku som nasadzoval klastre pomocou rančer. Neskúšal som spravované služby Kubernetes od Google/Amazon/Microsoft/DigitalOcean atď., atď., pretože som sa chcel všetko naučiť sám. Tiež som šetrný.

Takže áno, pri vyhodnocovaní možného zásobníka Kubernetes som strávil veľa času rozhodovaním sa, ktoré úložisko si vybrať. Uprednostňujem riešenia s otvoreným zdrojom, nielen kvôli cene, ale zo zvedavosti som sa pozrel na niekoľko platených možností, pretože majú bezplatné verzie s obmedzeniami. Zapísal som si niektoré čísla z nedávnych testov, keď som porovnával rôzne možnosti, a mohli by byť zaujímavé pre tých, ktorí sa učia o úložisku Kubernetes. Aj keď ja osobne som sa s Kubernetes nateraz rozlúčil. Tiež chcem spomenúť vodič CSI, ktorý dokáže priamo poskytovať objemy Hetzner Cloud, ale ešte som to neskúšal. Pozrel som sa na cloudové softvérovo definované úložisko, pretože som potreboval replikáciu a schopnosť rýchlo pripojiť trvalé zväzky na ľubovoľný uzol, najmä v prípade zlyhania uzla a iných podobných situácií. Niektoré riešenia ponúkajú okamžité snímky a zálohy mimo lokality, čo je pohodlné.

Testoval som 6-7 úložných riešení:

OpenEBS

Ako som už povedal v predchádzajúcom príspevkuPo otestovaní väčšiny možností zo zoznamu som sa pôvodne rozhodol pre OpenEBS. OpenEBS sa veľmi ľahko inštaluje a používa, no ak mám byť úprimný, po testovaní s reálnymi dátami v záťaži som bol z jeho výkonu sklamaný. Toto je open source a vývojári sú na to sami Slack kanál vždy mi veľmi pomohol, keď som potreboval pomoc. Bohužiaľ má veľmi slabý výkon v porovnaní s inými možnosťami, takže testy museli byť spustené znova. OpenEBS má momentálne 3 úložné motory, ale zverejňujem výsledky benchmarkov pre cStor. Zatiaľ nemám čísla pre Jiva a LocalPV.

Stručne povedané, Jiva je o niečo rýchlejší a LocalPV je vo všeobecnosti rýchly, nie je horší ako priamo benchmark disku. Problém s LocalPV je v tom, že k zväzku je možné pristupovať iba na uzle, kde bol pripravený, a nedochádza k žiadnej replikácii. Mal som nejaké problémy s obnovením zálohy cez jachta na novom klastri, pretože názvy uzlov boli odlišné. Ak hovoríme o zálohách, cStor má plugin pre Velero, pomocou ktorého môžete robiť zálohy snímok mimo lokality v určitom okamihu, čo je pohodlnejšie ako zálohy na úrovni súborov s Velero-Restic. napísal som niekoľko skriptov, aby sa uľahčila správa záloh a obnovy pomocou tohto doplnku. Celkovo sa mi OpenEBS veľmi páči, ale jeho výkon...

havran

Rook je tiež open source a líši sa od ostatných možností v zozname tým, že ide o orchestrátor úložiska, ktorý vykonáva zložité úlohy správy úložiska s rôznymi backendmi, napr. CEF, EdgeFS a iné, čo značne zjednodušuje prácu. Mal som problémy s EfgeFS, keď som ho pred pár mesiacmi skúšal, tak som testoval hlavne s Cephom. Ceph neponúka len blokové úložisko, ale aj objektové úložisko kompatibilné s S3/Swift a distribuovaným súborovým systémom. Čo sa mi na Ceph páči, je možnosť rozložiť objemové dáta na viacero diskov, takže zväzok môže využívať viac miesta na disku, ako sa zmestí na jeden disk. Je to pohodlné. Ďalšou skvelou funkciou je, že keď pridáte disky do klastra, automaticky sa prerozdelia údaje na všetky disky.

Ceph má snapshoty, ale pokiaľ viem, nedajú sa použiť priamo v Rook/Kubernetes. Pravda, nešiel som do toho hlboko. Neexistujú však žiadne zálohy mimo lokality, takže budete musieť použiť niečo s Velero/Restic, ale existujú iba zálohy na úrovni súborov, nie snímky v určitom čase. Na Rooku sa mi naozaj páčilo, aká jednoduchá je práca s Cephom – skrýva takmer všetky komplikované veci a ponúka nástroje na rozhovory priamo s Cephom pri riešení problémov. Bohužiaľ, počas záťažového testu objemov Ceph som mal stále problémy s tento problém, čo spôsobuje, že Ceph sa stáva nestabilným. Zatiaľ nie je jasné, či ide o chybu v samotnom Ceph alebo problém v tom, ako Rook spravuje Ceph. Pohral som sa s nastaveniami pamäte a zlepšilo sa to, ale problém nebol úplne vyriešený. Ceph má slušný výkon, ako môžete vidieť v benchmarkoch nižšie. Má aj dobrú palubnú dosku.

Rančer Longhorn

Veľmi sa mi páči Longhorn. Podľa mňa je to perspektívne riešenie. Je pravda, že samotní vývojári (Rancher Labs) priznávajú, že to ešte nie je vhodné pre pracovné prostredie, a to sa ukazuje. Je to open source a má slušný výkon (aj keď to ešte neoptimalizovali), ale zväzky sa veľmi dlho pripájajú k podu a v najhorších prípadoch to trvá 15-16 minút, hlavne po obnovení veľkej zálohy resp. zvýšenie pracovného zaťaženia. Má snímky a zálohy týchto snímok mimo lokality, ale vzťahujú sa len na zväzky, takže na zálohovanie iných zdrojov budete stále potrebovať niečo ako Velero. Zálohovanie a obnova sú veľmi spoľahlivé, ale neslušne pomalé. Vážne, len neuveriteľne pomaly. Využitie procesora a zaťaženie systému často stúpajú pri práci so stredným množstvom údajov v Longhorn. Na správu Longhornu je k dispozícii pohodlná palubná doska. Už som povedal, že mám rád Longhorn, ale chce to trochu práce.

StorageOS

StorageOS je prvým plateným produktom na zozname. Má vývojársku verziu s obmedzenou veľkosťou spravovaného úložiska 500 GB, ale nemyslím si, že existuje obmedzenie počtu uzlov. Obchodné oddelenie mi povedalo, že cena začína na 125 dolároch mesačne za 1 TB, ak si dobre pamätám. K dispozícii je základná prístrojová doska a pohodlné CLI, ale s výkonom sa deje niečo zvláštne: v niektorých benchmarkoch je celkom slušný, ale v záťažovom teste objemu sa mi vôbec nepáčila rýchlosť. Vo všeobecnosti neviem, čo povedať. Tak som tomu fakt moc nerozumel. Neexistujú tu žiadne zálohy mimo lokality a na zálohovanie zväzkov budete musieť použiť aj Velero s Restic. Je to zvláštne, pretože produkt je platený. A vývojári neboli nadšení komunikovať na Slacku.

červienka

O Robinovi som sa dozvedel na Reddite od ich technického riaditeľa. Nikdy predtým som o ňom nepočul. Možno preto, že som hľadal bezplatné riešenia, ale Robin je platený. Majú dosť veľkorysú bezplatnú verziu s 10 TB úložného priestoru a tromi uzlami. Celkovo je produkt celkom slušný a má pekné vlastnosti. Je tu skvelé CLI, ale najúžasnejšia vec je, že môžete urobiť snímku a zálohovať celú aplikáciu (vo výbere prostriedkov sa to nazýva Helm releases alebo “flex apps”), vrátane zväzkov a iných zdrojov, takže si vystačíte s Velero. A všetko by bolo úžasné, nebyť jedného malého detailu: ak obnovíte (alebo „importujete“, ako sa tomu hovorí v Robinovi) aplikáciu na novom klastri – napríklad v prípade obnovy po katastrofe – obnovenie, samozrejme, funguje, ale pokračovať v zálohovaní aplikácie je zakázané. V tomto vydaní to jednoducho nie je možné, ako potvrdili vývojári. To je mierne povedané zvláštne, najmä vzhľadom na ostatné výhody (napríklad neskutočne rýchle zálohy a obnovy). Vývojári sľubujú, že do ďalšieho vydania všetko napravia. Výkon je vo všeobecnosti dobrý, ale všimol som si zvláštnosť: ak spustím benchmark priamo na zväzku pripojenom k ​​hostiteľovi, rýchlosť čítania je oveľa vyššia ako pri spustení rovnakého zväzku z modulu. Všetky ostatné výsledky sú identické, ale teoreticky by medzi nimi nemal byť žiadny rozdiel. Aj keď na tom pracujú, bol som naštvaný na problém s obnovou a zálohovaním - myslel som si, že som konečne našiel vhodné riešenie a bol som dokonca ochotný zaň zaplatiť, keď som potreboval viac miesta alebo viac serverov.

portworx

Nemám tu veľmi čo povedať. Toto je platený produkt, rovnako cool a drahý. Výkon je jednoducho úžasný. Toto je zatiaľ najlepší ukazovateľ. Slack mi povedal, že ceny začínajú na 205 USD mesačne za uzol, ako je uvedené na GKE Marketplace spoločnosti Google. Neviem, či to bude lacnejšie, ak si kúpite priamo. To si aj tak nemôžem dovoliť, takže som bol veľmi, veľmi sklamaný, že vývojárska licencia (do 1 TB a 3 uzlov) je pri Kubernetes prakticky zbytočná, pokiaľ sa neuspokojíte so statickým poskytovaním. Dúfal som, že objemová licencia sa na konci skúšobného obdobia automaticky zníži na vývojára, ale nestalo sa tak. Vývojársku licenciu je možné použiť iba priamo s Dockerom a konfigurácia v Kubernetes je veľmi ťažkopádna a obmedzená. Samozrejme preferujem open source, ale keby som mal peniaze, tak by som si urcite vybral Portworx. Zatiaľ sa jeho výkon jednoducho nevyrovná iným možnostiam.

Linstor

Túto sekciu som pridal po zverejnení príspevku, keď jeden čitateľ navrhol vyskúšať Linstor. Skúsil som to a páčilo sa mi to! Stále však musíme ísť hlbšie. Teraz môžem povedať, že výkon nie je zlý (výsledky benchmarku som pridal nižšie). V podstate som získal rovnaký výkon ako disk priamo, bez akejkoľvek réžie. (Nepýtajte sa, prečo má Portworx priamo lepšie čísla ako benchmark disku. Nemám potuchy. Myslím, že mágia.) Takže Linstor sa zatiaľ javí ako veľmi efektívny. Nie je to také ťažké na inštaláciu, ale nie je to také jednoduché ako iné možnosti. Najprv som musel nainštalovať Linstor (modul jadra a nástroje/služby) a nakonfigurovať LVM na tenké poskytovanie a podporu snapshotov mimo Kubernetes, priamo na hostiteľovi, a potom vytvoriť zdroje potrebné na používanie úložiska z Kubernetes. Nepáčilo sa mi, že to nefungovalo na CentOS a musel som používať Ubuntu. Nie je to, samozrejme, strašné, ale trochu nepríjemné, pretože dokumentácia (mimochodom vynikajúca) uvádza niekoľko balíkov, ktoré nemožno nájsť v špecifikovaných úložiskách Epel. Linstor má snímky, ale nie zálohy mimo lokality, takže aj tu som musel na zálohovanie zväzkov použiť Velero s Restic. Uprednostnil by som snímky namiesto záloh na úrovni súborov, ale to sa dá tolerovať, ak je riešenie výkonné a spoľahlivé. Linstor je open source, ale má platenú podporu. Ak tomu dobre rozumiem, dá sa použiť bez obmedzení, aj keď nemáte zmluvu o podpore, ale to si treba ujasniť. Neviem, ako je Linstor testovaný pre Kubernetes, ale samotná úložná vrstva je mimo Kubernetes a riešenie sa zjavne neobjavilo včera, takže pravdepodobne už bolo testované v reálnych podmienkach. Existuje tu riešenie, ktoré ma prinúti zmeniť názor a vrátiť sa ku Kubernetes? Neviem. Stále musíme kopať hlbšie a študovať replikáciu. Pozrime sa. Ale prvý dojem je dobrý. Určite by som radšej používal vlastné klastre Kubernetes namiesto Heroku, aby som mal väčšiu slobodu a naučil sa nové veci. Keďže Linstor nie je tak jednoduchý na inštaláciu ako ostatné, čoskoro o ňom napíšem príspevok.

Benchmarks

Žiaľ, veľa poznámok o porovnaní som si nerobil, pretože som si nemyslel, že o tom budem písať. Mám len výsledky zo základných fio benchmarkov a len pre single node klastre, takže čísla pre replikované konfigurácie zatiaľ nemám. Ale z týchto výsledkov môžete získať približnú predstavu o tom, čo môžete očakávať od každej možnosti, pretože som ich porovnal na rovnakých cloudových serveroch, 4 jadrách, 16 GB RAM, s dodatočným 100 GB diskom pre testované zväzky. Trikrát som spustil benchmarky pre každé riešenie a vypočítal som priemerný výsledok a pre každý produkt som resetoval nastavenia servera. To všetko je úplne nevedecké, len pre všeobecnú predstavu. V iných testoch som skopíroval 38 GB fotografií a videí zo zväzku na testovanie čítania a zápisu, ale čísla som si, bohužiaľ, neuložil. V skratke: Portworkx bol oveľa rýchlejší.

Pre objemový benchmark som použil tento 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: 4

Najprv som vytvoril zväzok s príslušnou triedou úložiska a potom som v zákulisí spustil úlohu s fio. Vzal som si 1 GB, aby som odhadol výkon a nečakal príliš dlho. Tu sú výsledky:

Úložisko v Kubernetes: OpenEBS vs Rook (Ceph) vs Rancher Longhorn vs StorageOS vs Robin vs Portworx vs Linstor

Najlepšiu hodnotu pre každú metriku som zvýraznil zelenou a najhoršiu červenou.

Záver

Ako môžete vidieť, vo väčšine prípadov Portworx fungoval lepšie ako ostatní. Ale pre mňa je to drahé. Neviem, koľko stojí Robin, ale majú skvelú bezplatnú verziu, takže ak chcete platený produkt, môžete ho vyskúšať (snáď čoskoro vyriešia problém s obnovou a zálohovaním). Z troch bezplatných som mal najmenej problémov s OpenEBS, no jeho výkon je priepastný. Škoda, že som si neuložil viac výsledkov, ale dúfam, že čísla a moje komentáre vám pomôžu.

Zdroj: hab.com

Pridať komentár