Pohrana u Kubernetesu: OpenEBS vs Rook (Ceph) vs Rancher Longhorn vs StorageOS vs Robin vs Portworx vs Linstor

Pohrana u Kubernetesu: OpenEBS vs Rook (Ceph) vs Rancher Longhorn vs StorageOS vs Robin vs Portworx vs Linstor

Ažuriraj!. U komentarima je jedan od čitatelja predložio pokušaj Linstor (možda on sam radi na tome) pa sam dodao odjeljak o ovom rješenju. I ja sam napisao post o tome kako ga instalirati, jer se proces jako razlikuje od ostalih.

Da budem iskren, odustao sam i odustao Kubernetes (barem za sada). koristiti ću Heroku. Zašto? Zbog skladištenja! Tko bi rekao da ću se više petljati sa pohranom nego sa samim Kubernetesom. koristim Hetzner Cloudjer je jeftin i performanse su dobre i od samog sam početka postavljao klastere pomoću Rančer. Nisam isprobao upravljane Kubernetes usluge s Googlea/Amazona/Microsofta/DigitalOceana, itd., itd., jer sam sve želio sam naučiti. Također sam i štedljiva.

Dakle, da, proveo sam dosta vremena pokušavajući odlučiti koju pohranu odabrati kada sam procjenjivao mogući Kubernetes stog. Preferiram rješenja otvorenog koda, ne samo zbog cijene, već sam iz znatiželje pogledao nekoliko opcija koje se plaćaju jer imaju besplatne verzije s ograničenjima. Zabilježio sam neke brojeve iz nedavnih testova kada sam uspoređivao različite opcije i oni bi mogli biti zanimljivi onima koji uče o Kubernetes pohrani. Iako sam se osobno za sada oprostio od Kubernetesa. Također želim spomenuti CSI vozač, koji može izravno osigurati Hetzner Cloud volumene, ali to još nisam isprobao. Potražio sam pohranu definiranu softverom u oblaku jer mi je trebala replikacija i mogućnost brzog montiranja postojanih volumena na bilo koji čvor, posebno u slučaju kvarova čvora i drugih sličnih situacija. Neka rješenja nude trenutne snimke i sigurnosne kopije izvan stranice, što je zgodno.

Testirao sam 6-7 rješenja za pohranu:

OpenEBS

Kao što sam već rekao u prethodnom postuNakon što sam testirao većinu opcija s popisa, prvo sam se odlučio za OpenEBS. OpenEBS je vrlo jednostavan za instalaciju i korištenje, ali da budem iskren, nakon testiranja sa stvarnim podacima pod opterećenjem, bio sam razočaran njegovom izvedbom. Ovo je open source, a programeri su sami Slab kanal uvijek od velike pomoći kad mi je trebala pomoć. Nažalost, ima vrlo loše performanse u usporedbi s drugim opcijama, pa su se testovi morali ponoviti. OpenEBS trenutačno ima 3 mehanizma za pohranu podataka, ali objavljujem rezultate benchmarka za cStor. Još nemam brojeve za Jiva i LocalPV.

Ukratko, Jiva je malo brža, a LocalPV je općenito brz, ništa lošiji od direktnog benchmarka diska. Problem s LocalPV-om je taj što se volumenu može pristupiti samo na čvoru gdje je pripremljen, a replikacije uopće nema. Imao sam problema s vraćanjem sigurnosne kopije putem jedrilica na novom klasteru jer su nazivi čvorova bili drugačiji. Ako govorimo o backupima, cStor ima dodatak za Velero, s kojim možete napraviti sigurnosne kopije snimaka izvan mjesta u određenom trenutku, što je praktičnije od sigurnosnih kopija na razini datoteke s Velero-Restic. napisao sam nekoliko skripti, kako biste olakšali upravljanje sigurnosnim kopijama i vraćanjima pomoću ovog dodatka. Općenito, jako mi se sviđa OpenEBS, ali njegova izvedba...

Vrana

Rook je također otvorenog koda i razlikuje se od ostalih opcija na popisu po tome što je orkestrator pohrane koji obavlja složene zadatke upravljanja pohranom s različitim pozadinama, npr. cef, EdgeFS i drugi, što uvelike pojednostavljuje rad. Imao sam problema s EfgeFS-om kad sam ga isprobao prije nekoliko mjeseci, pa sam uglavnom testirao s Cephom. Ceph ne nudi samo pohranu blokova, već i pohranu objekata kompatibilnu sa S3/Swift i distribuiranim datotečnim sustavom. Ono što mi se sviđa kod Cepha je mogućnost širenja podataka volumena na više diskova tako da volumen može koristiti više prostora na disku nego što može stati na jedan disk. Udobno je. Još jedna zgodna značajka je da kada dodate diskove u klaster, on automatski redistribuira podatke na svim diskovima.

Ceph ima snimke, ali koliko ja znam, ne mogu se koristiti izravno u Rooku/Kubernetesu. Istina, nisam ulazio duboko u ovo. Ali nema sigurnosnih kopija izvan stranice, tako da ćete morati upotrijebiti nešto s Velero/Restic, ali postoje samo sigurnosne kopije na razini datoteke, a ne snimke u trenutku. Ono što mi se jako svidjelo kod Rooka je koliko je jednostavno raditi s Cephom - skriva gotovo sve komplicirane stvari i nudi alate za izravni razgovor s Cephom za rješavanje problema. Nažalost, tijekom stres testa Ceph volumena, nastavio sam imati problema s ovaj problem, što uzrokuje da Ceph postane nestabilan. Još nije jasno je li to greška u samom Cephu ili je problem u načinu na koji Rook upravlja Cephom. Petljao sam s postavkama memorije i bilo je bolje, ali problem nije u potpunosti riješen. Ceph ima pristojne performanse, kao što možete vidjeti u mjerilima ispod. Ima i dobru kontrolnu ploču.

Rančer Longhorn

Jako mi se sviđa Longhorn. Po mom mišljenju, ovo je rješenje koje obećava. Istina, sami programeri (Rancher Labs) priznaju da još nije prikladan za radnu okolinu, i to se vidi. Otvorenog je koda i ima pristojne performanse (iako ga još nisu optimizirali), ali volumenima treba jako dugo da se povežu s podom, au najgorim slučajevima potrebno je 15-16 minuta, osobito nakon vraćanja velike sigurnosne kopije ili nadogradnja radnog opterećenja. Ima snimke i sigurnosne kopije tih snimaka izvan stranice, ali one se odnose samo na volumene, tako da ćete i dalje trebati nešto poput Velera za sigurnosno kopiranje drugih resursa. Sigurnosne kopije i vraćanja su vrlo pouzdani, ali nepristojno spori. Ozbiljno, jednostavno nevjerojatno sporo. Upotreba CPU-a i opterećenje sustava često se povećavaju kada radite sa srednjom količinom podataka u Longhornu. Postoji praktična nadzorna ploča za upravljanje Longhornom. Već sam rekao da mi se sviđa Longhorn, ali treba malo doraditi.

StorageOS

StorageOS je prvi plaćeni proizvod na popisu. Ima verziju za razvojne programere s ograničenom veličinom upravljane pohrane od 500 GB, ali ne mislim da postoji ograničenje broja čvorova. Odjel prodaje mi je rekao da cijena počinje od 125 USD mjesečno za 1 TB, ako se dobro sjećam. Postoji osnovna nadzorna ploča i praktičan CLI, ali nešto se čudno događa s performansama: u nekim mjerilima je prilično pristojna, ali u volumenskom stres testu brzina mi se uopće nije svidjela. Općenito, ne znam što bih rekao. Tako da nisam baš puno razumjela. Ovdje nema sigurnosnih kopija izvan mjesta, a također ćete morati koristiti Velero s Resticom za sigurnosno kopiranje volumena. Čudno, jer se proizvod plaća. A programeri nisu bili željni komunicirati na Slacku.

crvendać

Za Robin sam saznao na Redditu od njihovog tehničkog direktora. Nikad prije nisam čuo za njega. Možda zato što sam tražio besplatna rješenja, ali Robin se plaća. Imaju prilično izdašnu besplatnu verziju s 10 TB prostora za pohranu i tri čvora. Sve u svemu, proizvod je sasvim pristojan i ima lijepe karakteristike. Postoji izvrstan CLI, ali najbolja stvar je što možete napraviti snimku i sigurnosnu kopiju cijele aplikacije (u biraču resursa to se zove Helm izdanja ili "flex aplikacije"), uključujući volumene i druge resurse, tako da možete bez Velera. I sve bi bilo divno da nema jednog malog detalja: ako vratite (ili "uvezete", kako se to zove u Robinu) aplikaciju na novi klaster - na primjer, u slučaju oporavka od katastrofe - obnova, naravno, radi, ali je zabranjeno nastaviti sigurnosno kopirati aplikaciju. To jednostavno nije moguće u ovom izdanju, kao što su programeri potvrdili. To je, blago rečeno, čudno, pogotovo ako se uzme u obzir ostale prednosti (primjerice, nevjerojatno brzo backupovanje i vraćanje). Programeri obećavaju da će sve popraviti do sljedećeg izdanja. Performanse su općenito dobre, ali primijetio sam neobičnost: ako pokrenem referentnu vrijednost izravno na volumenu priključenom na glavno računalo, brzina čitanja mnogo je brža od pokretanja istog volumena unutar modula. Svi ostali rezultati su identični, ali u teoriji ne bi trebalo biti razlike. Iako rade na tome, bio sam uzrujan zbog problema s vraćanjem i sigurnosnom kopijom - mislio sam da sam konačno pronašao odgovarajuće rješenje i čak sam bio spreman platiti za to kada mi je trebalo više prostora ili više poslužitelja.

portworx

Nemam tu puno za reći. Ovo je plaćeni proizvod, jednako cool i skup. Izvedba je jednostavno nevjerojatna. To je najbolji pokazatelj do sada. Slack mi je rekao da cijene počinju od 205 USD mjesečno po čvoru, kako je navedeno na Googleovoj GKE tržnici. Ne znam hoće li biti jeftinije ako kupuješ direktno. To si ionako ne mogu priuštiti, pa sam bio jako, jako razočaran što je licenca za razvojne programere (do 1 TB i 3 čvora) praktički beskorisna s Kubernetesom osim ako niste zadovoljni statičkim pružanjem usluga. Nadao sam se da će se količinska licenca automatski vratiti na programersku na kraju probnog razdoblja, ali to se nije dogodilo. Licenca razvojnog programera može se koristiti samo izravno s Dockerom, a konfiguracija u Kubernetesu vrlo je glomazna i ograničena. Naravno, preferiram open source, ali da imam novaca, sigurno bih odabrao Portworx. Za sada se njegove performanse jednostavno ne mogu usporediti s drugim opcijama.

Linstor

Dodao sam ovaj odjeljak nakon objave posta, kada je jedan čitatelj predložio isprobati Linstor. Probala sam i svidjelo mi se! Ali ipak moramo kopati dublje. Sada mogu reći da performanse nisu loše (u nastavku sam dodao benchmark rezultate). U biti, dobio sam iste performanse kao i disk izravno, bez ikakvih troškova. (Ne pitajte zašto Portworx ima bolje brojke od izravnog testa pogona. Nemam pojma. Čarolija, pretpostavljam.) Dakle, Linstor se do sada čini vrlo učinkovitim. Nije tako teško instalirati, ali nije tako jednostavno kao druge opcije. Prvo sam morao instalirati Linstor (modul kernela i alate/usluge) i konfigurirati LVM za tanko pružanje i podršku za snapshot izvan Kubernetesa, izravno na glavnom računalu, a zatim stvoriti resurse potrebne za korištenje pohrane iz Kubernetesa. Nije mi se svidjelo što ne radi na CentOS-u i morao sam koristiti Ubuntu. Nije strašno, naravno, ali pomalo neugodno, jer dokumentacija (koja je usput izvrsna) spominje nekoliko paketa koji se ne mogu pronaći u navedenim Epelovim spremištima. Linstor ima snimke, ali ne i sigurnosne kopije izvan stranice, tako da sam ovdje ponovno morao koristiti Velero s Resticom za sigurnosno kopiranje volumena. Više bih volio snimke umjesto sigurnosnih kopija na razini datoteke, ali to se može tolerirati ako je rješenje učinkovito i pouzdano. Linstor je otvorenog koda, ali ima plaćenu podršku. Ako dobro razumijem, može se koristiti bez ograničenja, čak i ako nemate ugovor o podršci, ali to treba razjasniti. Ne znam koliko je Linstor testiran za Kubernetes, ali sam sloj za pohranu je izvan Kubernetesa i, očito, rješenje se nije pojavilo jučer, tako da je vjerojatno već testirano u stvarnim uvjetima. Postoji li ovdje rješenje koje će me natjerati da se predomislim i vratim na Kubernetes? Ne znam. Još uvijek moramo kopati dublje i proučavati replikaciju. Da vidimo. Ali prvi dojam je dobar. Definitivno bih radije koristio vlastite Kubernetes klastere umjesto Herokua kako bih imao više slobode i naučio nove stvari. Budući da Linstor nije lako instalirati kao druge, uskoro ću napisati post o tome.

Mjerila

Nažalost, nisam vodio puno bilješki o usporedbi jer nisam mislio da ću pisati o tome. Imam samo rezultate iz osnovnih fio referentnih vrijednosti i samo za klastere s jednim čvorom, tako da još nemam brojeve za replicirane konfiguracije. Ali iz ovih rezultata možete dobiti okvirnu ideju o tome što možete očekivati ​​od svake opcije, jer sam ih usporedio na istim poslužiteljima u oblaku, 4 jezgre, 16 GB RAM-a, s dodatnim diskom od 100 GB za testirane količine. Pokrenuo sam mjerila tri puta za svako rješenje i izračunao prosječni rezultat, plus resetirao sam postavke poslužitelja za svaki proizvod. Ovo je potpuno neznanstveno, samo da vam dam opću ideju. U drugim sam testovima kopirao 38 GB fotografija i videozapisa s volumena kako bih testirao čitanje i pisanje, ali, nažalost, nisam spremio brojeve. Ukratko: Portworkx je bio mnogo brži.

Za referentnu vrijednost volumena upotrijebio sam ovaj 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

Najprije sam stvorio volumen s odgovarajućom klasom pohrane, a zatim sam obavio posao s fiom iza scene. Uzeo sam 1 GB za procjenu performansi i ne čekam predugo. Evo rezultata:

Pohrana u Kubernetesu: OpenEBS vs Rook (Ceph) vs Rancher Longhorn vs StorageOS vs Robin vs Portworx vs Linstor

Istaknuo sam najbolju vrijednost za svaku metriku zelenom bojom, a najlošiju crvenom bojom.

Zaključak

Kao što vidite, Portworx je u većini slučajeva bio bolji od ostalih. Ali za mene je to skupo. Ne znam koliko Robin košta, ali imaju izvrsnu besplatnu verziju, pa ako želite proizvod koji se plaća, možete ga isprobati (nadam se da će uskoro riješiti problem s vraćanjem i sigurnosnim kopijama). Od tri besplatna, najmanje problema sam imao s OpenEBS-om, ali njegove performanse su katastrofalne. Šteta što nisam spremio više rezultata, ali nadam se da će vam brojevi i moji komentari pomoći.

Izvor: www.habr.com

Dodajte komentar