Kubernetesda saqlash: OpenEBS va Ruk (Ceph) va Rancher Longhorn va StorageOS, Robin va Portvorks va Linstor

Kubernetesda saqlash: OpenEBS va Ruk (Ceph) va Rancher Longhorn va StorageOS, Robin va Portvorks va Linstor

Yangilash!. Izohlarda o'quvchilardan biri sinab ko'rishni taklif qildi Linstor (ehtimol, u o'zi ustida ishlayotgandir) shuning uchun men ushbu yechim haqida bo'lim qo'shdim. Men ham yozdim uni qanday o'rnatish haqida post, chunki jarayon qolganlardan juda farq qiladi.

Rostini aytsam, taslim bo'ldim va taslim bo'ldim Kubernetes (hech bo'lmaganda hozircha). foydalanaman Heroku. Nega? Saqlash tufayli! Kubernetesning o'zi bilan emas, balki saqlash bilan ko'proq shug'ullanaman deb kim o'ylagan bo'lardi. Men foydalanaman Hetzner bulutichunki bu arzon va ishlashi yaxshi va boshidanoq men klasterlarni ishlatib kelmoqdaman Rancher. Men Google/Amazon/Microsoft/DigitalOcean va hokazo va hokazolardan boshqariladigan Kubernetes xizmatlarini sinab ko'rmadim, chunki men hamma narsani o'zim o'rganmoqchi edim. Men ham tejamkorman.

Shunday qilib, ha, men mumkin bo'lgan Kubernetes stekini baholashda qaysi xotirani tanlashni tanlashga ko'p vaqt sarfladim. Men ochiq manbali echimlarni afzal ko'raman, faqat narxi tufayli emas, balki qiziqish tufayli bir nechta pullik variantlarni ko'rib chiqdim, chunki ularning cheklovlari bo'lgan bepul versiyalari bor. Turli xil variantlarni solishtirganda, yaqinda o'tkazilgan testlardan ba'zi raqamlarni yozib oldim va ular Kubernetes xotirasi haqida o'rganganlar uchun qiziqarli bo'lishi mumkin. Shaxsan men hozircha Kubernetes bilan xayrlashgan bo'lsam ham. Men ham aytib o'tmoqchiman CSI haydovchi, bu Hetzner Cloud hajmlarini to'g'ridan-to'g'ri ta'minlay oladi, lekin men buni hali sinab ko'rmadim. Men bulutli dasturiy ta'minot bilan belgilangan saqlashni ko'rib chiqdim, chunki menga replikatsiya va har qanday tugunga doimiy hajmlarni tezda o'rnatish qobiliyati kerak edi, ayniqsa tugun ishdan chiqishi va boshqa shunga o'xshash vaziyatlarda. Ba'zi echimlar tezkor suratlar va saytdan tashqari zaxira nusxalarini taklif qiladi, bu qulay.

Men 6-7 saqlash echimini sinab ko'rdim:

OpenEBS

Yuqorida aytib o'tganimdek oldingi postdaRo'yxatdagi ko'pgina variantlarni sinab ko'rganimdan so'ng, men dastlab OpenEBS-ga joylashdim. OpenEBS-ni o'rnatish va ishlatish juda oson, lekin rostini aytsam, yuk ostida haqiqiy ma'lumotlar bilan sinovdan o'tkazganimdan so'ng, uning ishlashidan hafsalam pir bo'ldi. Bu ochiq manba va ishlab chiquvchilar o'zlari Slack kanal Menga yordam kerak bo'lganda har doim juda foydali. Afsuski, u boshqa variantlarga nisbatan juda yomon ishlashga ega, shuning uchun testlarni qayta o'tkazish kerak edi. OpenEBS hozirda 3 ta saqlash dvigateliga ega, ammo men cStor uchun benchmark natijalarini joylashtiryapman. Menda hali Jiva va LocalPV uchun raqamlar yo'q.

Xulosa qilib aytganda, Jiva biroz tezroq va LocalPV odatda tez, to'g'ridan-to'g'ri disk ko'rsatkichidan yomonroq emas. LocalPV bilan bog'liq muammo shundaki, hajmga faqat u tayyorlangan tugunda kirish mumkin va hech qanday replikatsiya yo'q. orqali zaxira nusxasini tiklashda ba'zi muammolarga duch keldim Yelkanli qayiq yangi klasterda, chunki tugun nomlari boshqacha edi. Agar zaxira nusxalari haqida gapiradigan bo'lsak, cStor mavjud Velero uchun plagin, uning yordamida siz bir vaqtning o'zida oniy suratlarning saytdan tashqari zaxira nusxalarini yaratishingiz mumkin, bu Velero-Restic bilan fayl darajasidagi zahiraga qaraganda qulayroqdir. Men yozdim, .. yozganman bir nechta skriptlar, ushbu plagin yordamida zaxira va tiklashlarni boshqarishni osonlashtirish uchun. Umuman olganda, menga OpenEBS juda yoqadi, lekin uning ishlashi...

qal'a

Rook ham ochiq manba hisoblanadi va roʻyxatdagi qolgan variantlardan farq qiladi, chunki u saqlashni boshqarish boʻyicha murakkab vazifalarni bajaradigan saqlash orkestratori boʻlib, u turli backendlar bilan, masalan. Kef, EdgeFS va boshqalar, bu ishni sezilarli darajada osonlashtiradi. Bir necha oy oldin sinab ko'rganimda EfgeFS bilan bog'liq muammolar bor edi, shuning uchun men asosan Ceph bilan sinab ko'rdim. Ceph nafaqat blokli saqlashni, balki S3/Swift va taqsimlangan fayl tizimi bilan mos keladigan ob'ektni saqlashni ham taklif qiladi. Ceph haqida menga yoqadigan narsa bu hajm ma'lumotlarini bir nechta disklar bo'ylab tarqatish qobiliyatidir, shunda ovoz hajmi bitta diskga sig'adiganidan ko'ra ko'proq disk maydonini ishlatishi mumkin. Bu qulay. Yana bir ajoyib xususiyat shundaki, disklarni klasterga qo'shganda, u avtomatik ravishda barcha disklar bo'ylab ma'lumotlarni qayta taqsimlaydi.

Cephning suratlari bor, lekin men bilishimcha, ularni to'g'ridan-to'g'ri Rook/Kubernetesda ishlatib bo'lmaydi. To'g'ri, men bunga chuqur kirmadim. Ammo saytdan tashqarida zaxira nusxalari yo'q, shuning uchun siz Velero/Restic bilan biror narsadan foydalanishingiz kerak bo'ladi, lekin faqat fayl darajasidagi zaxira nusxalari mavjud, bir vaqtning o'zida oniy suratlar emas. Ruk menga juda yoqqan jihati Ceph bilan ishlash qanchalik osonligi edi - u deyarli barcha murakkab narsalarni yashiradi va muammolarni bartaraf etish uchun Ceph bilan bevosita gaplashish vositalarini taklif qiladi. Afsuski, Ceph jildlarining stress testi paytida men muammolarga duch keldim bu muammo, bu Cefning beqaror bo'lishiga olib keladi. Bu Cefning o'zida xatomi yoki Rukning Cefni boshqarishidagi muammomi, hozircha aniq emas. Men xotira sozlamalarini o'ylab ko'rdim va u yaxshilandi, ammo muammo to'liq hal qilinmadi. Quyidagi ko'rsatkichlarda ko'rib turganingizdek, Ceph yaxshi ishlashga ega. Bundan tashqari, yaxshi boshqaruv paneli mavjud.

Rancher Longhorn

Menga Longhorn juda yoqadi. Menimcha, bu istiqbolli yechim. To'g'ri, ishlab chiquvchilarning o'zlari (Rancher Labs) bu ish muhiti uchun hali mos emasligini tan olishadi va bu shuni ko'rsatadi. Bu ochiq manba va yaxshi ishlashga ega (ular uni hali optimallashtirishmagan bo'lsa ham), lekin hajmlar podkakka ulanish uchun juda uzoq vaqt talab etadi va eng yomon holatlarda, ayniqsa katta zaxira nusxasini tiklagandan keyin yoki 15-16 daqiqa davom etadi. ish yukini oshirish. Unda ushbu suratlarning oniy suratlari va saytdan tashqari zaxira nusxalari mavjud, ammo ular faqat hajmlarga tegishli, shuning uchun boshqa resurslarni zaxiralash uchun sizga Velero kabi biror narsa kerak bo'ladi. Zaxiralash va tiklash juda ishonchli, ammo juda sekin. Jiddiy, shunchaki aql bovar qilmaydigan darajada sekin. Longhorn-da o'rtacha hajmdagi ma'lumotlar bilan ishlashda protsessordan foydalanish va tizim yuki ko'pincha tezlashadi. Longhornni boshqarish uchun qulay boshqaruv paneli mavjud. Men allaqachon Longhornni yoqtirishimni aytdim, lekin u biroz ishlashga muhtoj.

StorageOS

StorageOS ro'yxatdagi birinchi pullik mahsulotdir. U 500 Gb cheklangan boshqariladigan saqlash hajmiga ega ishlab chiquvchi versiyasiga ega, ammo tugunlar soni bo'yicha cheklov yo'q deb o'ylayman. Savdo bo'limi, agar to'g'ri esimda bo'lsa, 125 TB uchun narx oyiga 1 dollardan boshlanishini aytdi. Asosiy asboblar paneli va qulay CLI mavjud, ammo ishlashda g'alati narsa yuz bermoqda: ba'zi mezonlarda bu juda yaxshi, ammo ovoz balandligidagi stress testida tezlik menga umuman yoqmadi. Umuman olganda, men nima deyishni bilmayman. Shuning uchun men ko'p narsani tushunmadim. Bu yerda saytdan tashqari zaxira nusxalari mavjud emas va siz hajmlarni zaxiralash uchun Velero-ni Restic bilan ham ishlatishingiz kerak bo'ladi. Bu g'alati, chunki mahsulot to'lanadi. Ishlab chiquvchilar esa Slack-da muloqot qilishni istashmadi.

Robin

Men Robin haqida Reddit-da ularning texnik direktoridan bilib oldim. Men u haqida hech qachon eshitmagan edim. Ehtimol, men bepul echimlarni qidirganim uchun, lekin Robin pullik. Ular 10 TB saqlash va uchta tugunga ega bo'lgan juda saxiy bepul versiyasiga ega. Umuman olganda, mahsulot juda yaxshi va yaxshi xususiyatlarga ega. Ajoyib CLI mavjud, lekin eng zo'r narsa shundaki, siz butun dasturni suratga olishingiz va zaxiralashingiz mumkin (resurs tanlovchisida bu Helm relizlari yoki "moslashuvchan ilovalar" deb ataladi), shu jumladan hajmlar va boshqa resurslar, shuning uchun Velerosiz ham qilishingiz mumkin. Va agar bitta kichik tafsilot bo'lmasa, hamma narsa ajoyib bo'lar edi: agar siz yangi klasterdagi dasturni qayta tiklasangiz (yoki "import", Robinda deyilganidek) - masalan, ofatdan xalos bo'lganda - tiklash, Albatta, ishlaydi, lekin dasturni zaxiralashni davom eting, bu taqiqlangan. Ishlab chiquvchilar tasdiqlaganidek, bu nashrda bu shunchaki mumkin emas. Bu, yumshoq qilib aytganda, g'alati, ayniqsa, boshqa afzalliklarni hisobga olgan holda (masalan, nihoyatda tez zaxiralash va tiklash). Ishlab chiquvchilar keyingi versiyaga qadar hamma narsani tuzatishga va'da berishadi. Ishlash odatda yaxshi, lekin men bir g'alatilikni payqadim: agar men to'g'ridan-to'g'ri xostga biriktirilgan ovoz balandligida benchmarkni ishlatsam, o'qish tezligi pod ichidagi bir xil tovushni ishlatishdan ancha tezroq bo'ladi. Boshqa barcha natijalar bir xil, ammo nazariy jihatdan farq bo'lmasligi kerak. Garchi ular bu ustida ishlayotgan bo'lsalar ham, tiklash va zaxiralash bilan bog'liq muammo meni xafa qildi - men nihoyat mos yechim topdim deb o'yladim va hatto ko'proq joy yoki ko'proq serverlar kerak bo'lganda buning uchun pul to'lashga tayyor edim.

Portvorks

Bu yerda aytadigan gapim yo‘q. Bu pullik mahsulot, bir xil darajada salqin va qimmat. Ishlash shunchaki ajoyib. Bu hozirgacha eng yaxshi ko'rsatkich. Slack menga narxlash har bir tugun uchun oyiga 205 dollardan boshlanishini aytdi, bu Google'ning GKE Marketplace ro'yxatida ko'rsatilgan. To'g'ridan-to'g'ri sotib olsangiz, arzonroq bo'ladimi, bilmayman. Men baribir bunga qodir emasman, shuning uchun ishlab chiqaruvchi litsenziyasi (1 TB va 3 tugungacha) Kubernetes bilan deyarli foydasiz ekanidan juda xafa bo'ldim, agar siz statik ta'minotdan mamnun bo'lmasangiz. Sinov muddati tugagandan so'ng, litsenziya avtomatik ravishda ishlab chiquvchi darajasiga tushadi deb umid qilgandim, lekin bu sodir bo'lmadi. Ishlab chiqaruvchi litsenziyasidan faqat Docker bilan to'g'ridan-to'g'ri foydalanish mumkin va Kubernetes-dagi konfiguratsiya juda og'ir va cheklangan. Albatta, men ochiq manba kodini afzal ko'raman, lekin agar pulim bo'lsa, albatta Portworx-ni tanlagan bo'lardim. Hozircha uning ishlashi boshqa variantlar bilan taqqoslanmaydi.

Linstor

Men ushbu bo'limni post chop etilgandan so'ng, o'quvchi Linstorni sinab ko'rishni taklif qilganida qo'shdim. Men uni sinab ko'rdim va yoqdi! Lekin men biroz ko'proq qazishim kerak. Hozircha, ishlash juda yaxshi deb ayta olaman (men quyida benchmark natijalarini qo'shdim). Aslida, men hech qanday qo'shimcha xarajatlarsiz to'g'ridan-to'g'ri disk benchmarki bilan bir xil ishlashga ega bo'ldim. (Nima uchun Portworx raqamlari to'g'ridan-to'g'ri disk benchmarkidan yaxshiroq ekanligini so'ramang. Menda hech qanday tasavvur yo'q. Sehr, menimcha.) Shunday qilib, Linstor hozircha juda samarali ko'rinadi. Uni sozlash unchalik qiyin emas, lekin boshqa variantlar kabi oson emas. Avvaliga men Linstorni (yadro moduli va vositalari/xizmatlari) o'rnatishim va Kubernetesdan tashqarida, to'g'ridan-to'g'ri xostda yupqa ta'minot va suratga olishni qo'llab-quvvatlash uchun LVM ni o'rnatishim kerak edi, keyin esa Kubernetesdan saqlash joyidan foydalanish uchun zarur bo'lgan resurslarni yaratishim kerak edi. Uning ishlamasligidan xursand emas edim... CentOS va foydalanish kerak edi UbuntuAlbatta, bu katta muammo emas, lekin bu biroz zerikarli, chunki hujjatlarda (aytgancha, bu juda yaxshi) ko'rsatilgan Epel omborlarida mavjud bo'lmagan bir nechta paketlar haqida so'z boradi. Linstorda suratlar mavjud, ammo saytdan tashqarida zaxira nusxalari yo'q, shuning uchun men hajmli zaxira nusxalari uchun yana Velero va Resticdan foydalanishim kerak bo'ldi. Men fayl darajasidagi zaxira nusxalaridan ko'ra suratlarni afzal ko'raman, lekin agar yechim samarali va ishonchli bo'lsa, bunga toqat qilish mumkin. Linstor ochiq kodli, ammo pullik qo'llab-quvvatlash mavjud. Agar to'g'ri tushunsam, siz qo'llab-quvvatlash shartnomangiz bo'lmasa ham, undan cheklovlarsiz foydalanishingiz mumkin, lekin men buni tekshirib ko'rishim kerak. Linstor Kubernetes uchun qanchalik sinovdan o'tganini bilmayman, lekin saqlash qatlamining o'zi Kubernetesdan tashqarida va u anchadan beri mavjud bo'lib tuyuladi, shuning uchun u allaqachon real sharoitlarda sinovdan o'tgan bo'lishi mumkin. Bu yerda fikrimni o'zgartirishga va Kubernetesga qaytishga majbur qiladigan yechim bormi? Bilmadim. Replikatsiya haqida biroz ko'proq o'rganishim kerak. Ko'ramiz. Lekin birinchi taassurot yaxshi. Ko'proq erkinlik va yangi narsalarni o'rganish uchun Heroku o'rniga o'zimning Kubernetes klasterlarimdan foydalanishni afzal ko'raman. Linstorni boshqalar kabi o'rnatish oson emasligi sababli, tez orada bu haqda post yozaman.

Benchmarks

Afsuski, taqqoslash haqida ko'p eslatma o'tkazmadim, chunki bu haqda yozaman deb o'ylamagan edim. Menda faqat asosiy fio mezonlari va faqat bitta tugunli klasterlar uchun natijalar bor, shuning uchun menda hali takrorlangan konfiguratsiyalar uchun raqamlar yo'q. Ammo bu natijalardan siz har bir variantdan nimani kutish kerakligi haqida taxminiy tasavvurga ega bo'lishingiz mumkin, chunki men ularni bir xil bulutli serverlarda, 4 yadroli, 16 Gb tezkor xotirada, sinovdan o'tgan hajmlar uchun qo'shimcha 100 Gb disk bilan taqqosladim. Men har bir yechim uchun benchmarklarni uch marta o'tkazdim va o'rtacha natijani hisobladim, shuningdek, har bir mahsulot uchun server sozlamalarini tikladim. Bularning barchasi mutlaqo ilmiy asosga to'g'ri kelmaydi, faqat sizga umumiy fikr berish uchun. Boshqa testlarda men o'qish va yozishni sinab ko'rish uchun 38 Gb hajmdagi fotosuratlar va videolarni nusxa ko'chirdim, lekin, afsuski, raqamlarni saqlamadim. Qisqasi: Portworkx ancha tezroq edi.

Ovoz ko'rsatkichi uchun men ushbu manifestdan foydalandim:

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

Men birinchi navbatda tegishli saqlash sinfi bilan jild yaratdim va keyin ishni sahna ortida fio bilan boshqardim. Men unumdorlikni baholash uchun 1 GB oldim va uzoq kutmang. Mana natijalar:

Kubernetesda saqlash: OpenEBS va Ruk (Ceph) va Rancher Longhorn va StorageOS, Robin va Portvorks va Linstor

Men har bir ko‘rsatkich uchun eng yaxshi qiymatni yashil rangda, eng yomonini esa qizil rangda ta’kidladim.

xulosa

Ko'rib turganingizdek, ko'p hollarda Portworx boshqalarga qaraganda yaxshiroq ishladi. Lekin men uchun bu qimmat. Robin qancha turadi, bilmayman, lekin ularning ajoyib bepul versiyasi bor, shuning uchun agar siz pullik mahsulotni xohlasangiz, uni sinab ko'rishingiz mumkin (umid qilamanki, ular tez orada tiklash va zaxira nusxalari bilan muammoni hal qilishadi). Uchta bepuldan men OpenEBS bilan eng kam muammolarga duch keldim, ammo uning ishlashi juda yomon. Ko'proq natijalarni saqlamaganim achinarli, lekin raqamlar va sharhlarim sizga yordam beradi deb umid qilaman.

Manba: www.habr.com

DDoS himoyasi, VPS VDS serverlari bo'lgan saytlar uchun ishonchli hosting sotib oling 🔥 DDoS himoyasi, VPS VDS serverlari bilan ishonchli veb-sayt xostingini sotib oling | ProHoster