Archiviazione in Kubernetes: OpenEBS vs Rook (Ceph) vs Rancher Longhorn vs StorageOS vs Robin vs Portworx vs Linstor

Archiviazione in Kubernetes: OpenEBS vs Rook (Ceph) vs Rancher Longhorn vs StorageOS vs Robin vs Portworx vs Linstor

Aggiornare!. Nei commenti, uno dei lettori ha suggerito di provare Linstor (forse ci sta lavorando lui stesso) quindi ho aggiunto una sezione su questa soluzione. Ho anche scritto post su come installarlo, perché il processo è molto diverso dal resto.

Ad essere sincero, mi sono arreso e mi sono arreso kubernetes (almeno per ora). userò Heroku. Perché? A causa dello stoccaggio! Chi avrebbe mai pensato che avrei armeggiato più con lo storage che con Kubernetes stesso. Io uso nuvola di Hetznerperché è poco costoso e le prestazioni sono buone e fin dall'inizio ho distribuito cluster utilizzando proprietario di ranch. Non ho provato i servizi gestiti Kubernetes di Google/Amazon/Microsoft/DigitalOcean, ecc. ecc., perché volevo imparare tutto da solo. Sono anche frugale.

Quindi sì, ho passato molto tempo cercando di decidere quale storage scegliere quando valutavo un possibile stack Kubernetes. Preferisco le soluzioni open source, non solo per il prezzo, ma ho esaminato un paio di opzioni a pagamento per curiosità perché hanno versioni gratuite con limitazioni. Ho annotato alcuni numeri provenienti da test recenti quando ho confrontato diverse opzioni e potrebbero essere interessanti per coloro che stanno imparando a conoscere lo storage Kubernetes. Anche se personalmente per ora ho detto addio a Kubernetes. Voglio anche menzionare Autista CSI, che può eseguire direttamente il provisioning dei volumi Hetzner Cloud, ma non l'ho ancora provato. Ho esaminato lo storage cloud definito dal software perché avevo bisogno della replica e della possibilità di montare rapidamente volumi persistenti su qualsiasi nodo, soprattutto in caso di guasti del nodo e altre situazioni simili. Alcune soluzioni offrono istantanee temporizzate e backup off-site, il che è conveniente.

Ho testato 6-7 soluzioni di archiviazione:

ApriEBS

Come ho già detto in un post precedenteDopo aver testato la maggior parte delle opzioni dell'elenco, inizialmente ho optato per OpenEBS. OpenEBS è molto facile da installare e utilizzare, ma a dire il vero, dopo aver testato con dati reali sotto carico, sono rimasto deluso dalle sue prestazioni. Questo è open source e gli sviluppatori sono soli Canale lento sempre molto disponibile quando avevo bisogno di aiuto. Sfortunatamente, ha prestazioni molto scarse rispetto ad altre opzioni, quindi i test hanno dovuto essere rieseguiti. OpenEBS ha attualmente 3 motori di archiviazione, ma sto pubblicando i risultati dei benchmark per cStor. Non ho ancora i numeri per Jiva e LocalPV.

In poche parole, Jiva è un po' più veloce e LocalPV è generalmente veloce, non peggiore del benchmark diretto del disco. Il problema con LocalPV è che è possibile accedere al volume solo sul nodo in cui è stato preparato e non vi è alcuna replica. Ho avuto alcuni problemi nel ripristinare un backup tramite barca a vela su un nuovo cluster perché i nomi dei nodi erano diversi. Se parliamo di backup, cStor ha plugin per Velero, con il quale è possibile eseguire backup off-site di istantanee in un determinato momento, il che è più conveniente dei backup a livello di file con Velero-Restic. scrissi diversi script, per semplificare la gestione di backup e ripristini con questo plugin. Nel complesso, mi piace molto OpenEBS, ma le sue prestazioni...

Rook

Anche Rook è open source e differisce dal resto delle opzioni nell'elenco in quanto è un orchestratore di archiviazione che esegue attività complesse di gestione dello storage con diversi backend, ad es. Cefe, EdgeFS e altri, il che semplifica notevolmente il lavoro. Ho avuto problemi con EfgeFS quando l'ho provato qualche mese fa, quindi ho provato principalmente con Ceph. Ceph non offre solo storage a blocchi, ma anche storage di oggetti compatibile con S3/Swift e file system distribuito. Ciò che mi piace di Ceph è la capacità di distribuire i dati del volume su più dischi in modo che il volume possa utilizzare più spazio su disco di quello che può stare su un singolo disco. È comodo. Un'altra caratteristica interessante è che quando aggiungi dischi a un cluster, ridistribuisce automaticamente i dati su tutti i dischi.

Ceph dispone di istantanee, ma per quanto ne so non possono essere utilizzate direttamente in Rook/Kubernetes. È vero, non sono andato in profondità in questo. Ma non ci sono backup off-site, quindi dovrai usare qualcosa con Velero/Restic, ma ci sono solo backup a livello di file, non istantanee point-in-time. Ciò che mi è davvero piaciuto di Rook è stata la facilità con cui è possibile lavorare con Ceph: nasconde quasi tutte le cose complicate e offre strumenti per parlare direttamente con Ceph per la risoluzione dei problemi. Purtroppo, durante lo stress test dei volumi Ceph, ho continuato ad avere problemi con questo problema, il che rende Ceph instabile. Non è ancora chiaro se si tratti di un bug di Ceph stesso o di un problema nel modo in cui Rook gestisce Ceph. Ho armeggiato con le impostazioni della memoria e la situazione è migliorata, ma il problema non è stato completamente risolto. Ceph ha prestazioni decenti, come puoi vedere nei benchmark seguenti. Ha anche un buon cruscotto.

Rancher Longhorn

Mi piace molto Longhorn. A mio parere, questa è una soluzione promettente. È vero, gli stessi sviluppatori (Rancher Labs) ammettono che non è ancora adatto all'ambiente di lavoro, e questo dimostra. È open source e ha prestazioni decenti (anche se non l'hanno ancora ottimizzato), ma i volumi impiegano molto tempo per connettersi al pod e, nel peggiore dei casi, ci vogliono 15-16 minuti, soprattutto dopo aver ripristinato un backup di grandi dimensioni o potenziamento del carico di lavoro. Dispone di istantanee e backup off-site di queste istantanee, ma si applicano solo ai volumi, quindi avrai comunque bisogno di qualcosa come Velero per eseguire il backup di altre risorse. I backup e i ripristini sono molto affidabili, ma indecentemente lenti. Sul serio, semplicemente incredibilmente lento. L'utilizzo della CPU e il carico del sistema spesso aumentano quando si lavora con una quantità media di dati in Longhorn. C'è una comoda dashboard per gestire Longhorn. Ho già detto che mi piace Longhorn, ma ha bisogno di un po' di lavoro.

Sistema operativo di archiviazione

StorageOS è il primo prodotto a pagamento nell'elenco. Ha una versione per sviluppatori con una dimensione di archiviazione gestita limitata di 500 GB, ma non credo che ci sia un limite al numero di nodi. Il reparto vendite mi ha detto che il costo parte da $ 125 al mese per 1 TB, se ricordo bene. C'è una dashboard di base e una comoda CLI, ma sta succedendo qualcosa di strano con le prestazioni: in alcuni benchmark è abbastanza decente, ma nello stress test del volume non mi è piaciuta affatto la velocità. In generale, non so cosa dire. Quindi non ho capito molto. Non ci sono backup fuori sede qui e dovrai anche utilizzare Velero con Restic per eseguire il backup dei volumi. È strano, perché il prodotto è pagato. E gli sviluppatori non erano ansiosi di comunicare su Slack.

pettirosso

Ho saputo di Robin su Reddit dal loro direttore tecnico. Non ne avevo mai sentito parlare prima. Forse perché cercavo soluzioni gratuite, ma Robin è a pagamento. Hanno una versione gratuita piuttosto generosa con 10 TB di spazio di archiviazione e tre nodi. Nel complesso, il prodotto è abbastanza decente e ha caratteristiche interessanti. C'è un'ottima CLI, ma la cosa più interessante è che puoi eseguire lo snapshot e il backup dell'intera applicazione (nel selettore delle risorse si chiama versioni Helm o "app flessibili"), inclusi volumi e altre risorse, così puoi fare a meno di Velero. E tutto sarebbe meraviglioso se non fosse per un piccolo dettaglio: se ripristini (o “importi”, come dice Robin) un'applicazione su un nuovo cluster - ad esempio, in caso di ripristino da un disastro - il ripristino, ovviamente funziona, ma è vietato continuare a eseguire il backup dell'applicazione. Ciò semplicemente non è possibile in questa versione, come hanno confermato gli sviluppatori. Questo è, per usare un eufemismo, strano, soprattutto considerando gli altri vantaggi (ad esempio, backup e ripristini incredibilmente veloci). Gli sviluppatori promettono di sistemare tutto entro la prossima versione. Le prestazioni sono generalmente buone, ma ho notato una stranezza: se eseguo il benchmark direttamente su un volume collegato all'host, la velocità di lettura è molto più veloce rispetto all'esecuzione dello stesso volume dall'interno del pod. Tutti gli altri risultati sono identici, ma in teoria non dovrebbero esserci differenze. Anche se ci stanno lavorando, ero sconvolto dal problema con il ripristino e il backup: pensavo di aver finalmente trovato una soluzione adeguata ed ero persino disposto a pagare per questo quando avevo bisogno di più spazio o più server.

portwx

Non ho molto da dire qui. Questo è un prodotto a pagamento, altrettanto interessante e costoso. La performance è semplicemente fantastica. Questo è il miglior indicatore finora. Slack mi ha detto che i prezzi partono da $ 205 al mese per nodo, come indicato nel GKE Marketplace di Google. Non so se costerà meno acquistando direttamente. In ogni caso non posso permettermelo, quindi sono rimasto molto, molto deluso dal fatto che la licenza per sviluppatore (fino a 1 TB e 3 nodi) sia praticamente inutile con Kubernetes a meno che non ti accontenti del provisioning statico. Speravo che la licenza a volume venisse automaticamente retrocessa a sviluppatore al termine del periodo di prova, ma ciò non è accaduto. La licenza per sviluppatore può essere utilizzata solo direttamente con Docker e la configurazione in Kubernetes è molto macchinosa e limitata. Ovviamente preferisco l'open source, ma se avessi i soldi sceglierei sicuramente Portworx. Finora, le sue prestazioni semplicemente non sono paragonabili ad altre opzioni.

Linstor

Ho aggiunto questa sezione dopo la pubblicazione del post, quando un lettore ha suggerito di provare Linstor. L'ho provato e mi è piaciuto! Ma devo approfondire ulteriormente. Per ora, posso dire che le prestazioni sono piuttosto buone (ho aggiunto i risultati del benchmark qui sotto). In effetti, ho ottenuto le stesse prestazioni di un benchmark diretto su disco, senza alcun overhead. (Non chiedetemi perché i numeri di Portworx siano migliori del benchmark diretto su disco. Non ne ho idea. Magia, suppongo.) Quindi, Linstor sembra molto efficace finora. Configurarlo non è esattamente difficile, ma non è facile come altre opzioni. Prima ho dovuto installare Linstor (modulo del kernel e strumenti/servizi) e configurare LVM per il thin provisioning e il supporto snapshot al di fuori di Kubernetes, direttamente sull'host, e poi creare le risorse necessarie per utilizzare lo storage da Kubernetes. Non ero contento che non funzionasse su CentOS e ha dovuto usare UbuntuNon è un grosso problema, ovviamente, ma è un po' fastidioso perché la documentazione (che tra l'altro è eccellente) menziona diversi pacchetti non disponibili nei repository EPEL specificati. Linstor offre snapshot, ma non backup off-site, quindi ho dovuto usare di nuovo Velero con Restic per i backup dei volumi. Preferirei gli snapshot ai backup a livello di file, ma è accettabile se la soluzione è performante e affidabile. Linstor è open source, ma offre supporto a pagamento. Se ho capito bene, si può usare senza restrizioni anche senza un contratto di supporto, ma dovrei verificarlo. Non so quanto Linstor sia stato testato con Kubernetes, ma il livello di storage stesso è esterno a Kubernetes e sembra che esista da un po' di tempo, quindi probabilmente è già stato testato in condizioni reali. Esiste una soluzione che mi farebbe cambiare idea e tornare a Kubernetes? Non lo so. Devo approfondire un po' di più e imparare come funziona la replica. Vedremo. Ma la prima impressione è buona. Preferirei sicuramente usare i miei cluster Kubernetes invece di Heroku per avere più libertà e per imparare cose nuove. Dato che Linstor non è così facile da installare come altri, scriverò presto un post a riguardo.

Punti di riferimenti

Purtroppo non ho tenuto molti appunti sul confronto perché non pensavo di scriverne. Ho solo risultati dai benchmark fio di base e solo per cluster a nodo singolo, quindi non dispongo ancora di numeri per le configurazioni replicate. Ma da questi risultati puoi avere un'idea approssimativa di cosa aspettarti da ciascuna opzione, perché le ho confrontate sugli stessi server cloud, 4 core, 16 GB di RAM, con un disco aggiuntivo da 100 GB per i volumi testati. Ho eseguito i benchmark tre volte per ciascuna soluzione e ho calcolato il risultato medio, inoltre ho ripristinato le impostazioni del server per ciascun prodotto. Tutto questo è completamente antiscientifico, solo per darti un'idea generale. In altri test ho copiato 38 GB di foto e video dal volume per testare la lettura e la scrittura, ma ahimè non ho salvato i numeri. In breve: Portworkx era molto più veloce.

Per il benchmark del volume ho usato questo 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

Per prima cosa ho creato un volume con la classe di archiviazione appropriata e poi ho eseguito il lavoro con fio dietro le quinte. Ho preso 1 GB per stimare le prestazioni e non aspettare troppo a lungo. Ecco i risultati:

Archiviazione in Kubernetes: OpenEBS vs Rook (Ceph) vs Rancher Longhorn vs StorageOS vs Robin vs Portworx vs Linstor

Ho evidenziato il valore migliore per ciascuna metrica in verde e il peggiore in rosso.

conclusione

Come puoi vedere, nella maggior parte dei casi Portworx ha funzionato meglio di altri. Ma per me è caro. Non so quanto costa Robin, ma hanno un'ottima versione gratuita, quindi se vuoi un prodotto a pagamento, puoi provarlo (speriamo che risolvano presto il problema con il ripristino e i backup). Dei tre gratuiti, ho avuto meno problemi con OpenEBS, ma le sue prestazioni sono pessime. È un peccato non aver salvato più risultati, ma spero che i numeri e i miei commenti ti possano aiutare.

Fonte: habr.com

Acquista hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting web affidabile con protezione DDoS, server VPS e VDS | ProHoster