Rook - Kubernetes uchun o'z-o'ziga xizmat ko'rsatish ma'lumotlar do'koni

Rook - Kubernetes uchun o'z-o'ziga xizmat ko'rsatish ma'lumotlar do'koni

29-yanvar kuni CNCF (Cloud Native Computing Foundation) texnik qo‘mitasi, Kubernetes, Prometey va konteynerlar va bulutli dunyoning boshqa ochiq manbali mahsulotlarini ishlab chiqaruvchi tashkilot, e'lon loyihani qabul qilish to'g'risida qal'a ularning safiga kiradi. Ushbu "Kubernetesdagi taqsimlangan saqlash orkestrori" bilan tanishish uchun ajoyib imkoniyat.

Qanday Rook?

qal'a bu Go da yozilgan dastur (tarqaladi bepul Apache Litsenziyasi 2.0 ostida), ma'lumotlar omborlarini avtomatlashtirilgan funktsiyalar bilan ta'minlash uchun mo'ljallangan. o'z-o'zini boshqarish, o'z-o'zini masshtablash va o'z-o'zini davolash. Buning uchun Rook avtomatlashtiradi (Kubernetes muhitida foydalaniladigan maʼlumotlar doʻkonlari uchun): joylashtirish, yuklash, konfiguratsiya, taʼminlash, masshtablash, yangilash, koʻchirish, falokatlarni tiklash, monitoring va resurslarni boshqarish.

Loyiha alfa bosqichida va Kubernetes klasterlarida Ceph taqsimlangan saqlash tizimini boshqarishga ixtisoslashgan. Mualliflar, shuningdek, boshqa saqlash tizimlarini qo'llab-quvvatlash rejalarini e'lon qilishadi, ammo bu keyingi nashrlarda sodir bo'lmaydi.

Komponentlar va texnik jihozlar

Rukning Kubernetes ichidagi ishi maxsus operatorga asoslangan (biz Kubernetes operatorlari haqida ko'proq yozgan edik Ushbu maqola), bu saqlash konfiguratsiyasini avtomatlashtiradi va uning monitoringini amalga oshiradi.

Va shunday qilib, Rook operatori saqlash va keyinchalik saqlash uchun zarur bo'lgan barcha narsalarni o'z ichiga olgan konteyner kabi ko'rinadi. Operatorning majburiyatlariga quyidagilar kiradi:

  • Ceph saqlash demonlari uchun DaemonSet yaratish (seph-osd) oddiy RADOS klasteri bilan;
  • Ceph monitoringi uchun podlar yaratish (dan.) seph-mon, klaster holatini tekshirish; kvorum uchun ko'p hollarda uchta nusxa tarqatiladi va agar ulardan biri tushib qolsa, yangisi ko'tariladi);
  • CRD boshqaruvi (Maxsus manba ta'riflari) o'zi uchun klaster, saqlash hovuzlari, ob'ektlar do'konlari (ob'ektlarda PUT/GETni amalga oshiradigan HTTP so'rovlariga xizmat ko'rsatish uchun resurslar va xizmatlar to'plami - ular S3 va Swift API bilan mos keladi), shuningdek fayl tizimlari;
  • barcha kerakli xizmatlarni ishga tushirish uchun podlarni ishga tushirish;
  • Rook agentlarini yaratish.

Rook agentlari Har bir Kubernetes tugunida joylashtirilgan alohida podalar bilan ifodalanadi. Agentning maqsadi plagin konfiguratsiyasi FlexVolume, bu Kubernetes-da saqlash hajmlarini qo'llab-quvvatlaydi. Agent xotiraning ishlashini amalga oshiradi: tarmoq saqlash qurilmalarini ulaydi, hajmlarni o'rnatadi, fayl tizimini formatlaydi va hokazo.

Rook - Kubernetes uchun o'z-o'ziga xizmat ko'rsatish ma'lumotlar do'koni
Kubernetes klasterining umumiy sxemasida Rook komponentlarining o'rni va roli

Rook uchta saqlash turini taklif qiladi:

  1. blok (blok, StorageClass) — omborni bitta o‘choqqa o‘rnatadi;
  2. ob'ekt (ob'ekt, ObjectStore) - Kubernetes klasterining ichida va tashqarisida mavjud (S3 API orqali);
  3. umumiy fayl tizimi (Umumiy fayl tizimi, Filesystem) bir nechta podlardan o'qish va yozish uchun o'rnatilishi mumkin bo'lgan fayl tizimidir.

Rookning ichki qismlariga quyidagilar kiradi:

  • Mons — Ceph monitoringi uchun podlar (yuqorida aytib o'tilgan seph-mon bilan);
  • OSDlar - seph-osd demonlari bilan podalar (Object Storage Demons);
  • M.G.R. - jin bilan podalar seph-mgr (Ceph Manager), bu tashqi tizimlar uchun qo'shimcha monitoring imkoniyatlari va interfeyslarni ta'minlaydi (monitoring/nazorat);
  • RGW (ixtiyoriy) - ob'ektni saqlashga ega podalar;
  • MDS (ixtiyoriy) - umumiy fayl tizimiga ega podlar.

Rook - Kubernetes uchun o'z-o'ziga xizmat ko'rsatish ma'lumotlar do'koni

Barcha Rook demonlari (Mons, OSDs, MGR, RGW, MDS) bitta ikkilik faylga tuzilgan (rook) konteynerda yugurish.

Rook loyihasiga qisqacha kirish uchun ushbu qisqa (12 slayd) ham foydali bo'lishi mumkin. taqdimot Bassam Tabbaradan (Quantum Corp bosh direktori).

Rookni boshqarish

Rook operatori Kubernetesning 1.6 va undan yuqori versiyalarini to'liq qo'llab-quvvatlaydi (va qisman, eski K8-ning chiqarilishi - 1.5.2). Uning o'rnatish в eng oddiy stsenariy quyidagicha ko'rinadi:

cd cluster/examples/kubernetes
kubectl create -f rook-operator.yaml
kubectl create -f rook-cluster.yaml

Bundan tashqari, Rook operatori tayyorlanadi Rulda diagrammasi, buning yordamida o'rnatish quyidagicha amalga oshirilishi mumkin:

helm repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook

Kichik miqdor mavjud sozlash imkoniyatlari (masalan, siz qo'llab-quvvatlashni o'chirib qo'yishingiz mumkin RBAC, agar bu xususiyat sizning klasteringizda ishlatilmasa), qaysilarga uzatiladi helm install parametr orqali --set key=value[,key=value] (yoki alohida YAML faylida saqlang va orqali uzating -f values.yaml).

Rook operatorini o'rnatgandan va uning agentlari bilan podlarni ishga tushirgandan so'ng, eng oddiy konfiguratsiyasi shunday ko'rinadigan Rook klasterini yaratish qoladi (rook-cluster.yaml):

apiVersion: v1
kind: Namespace
metadata:
  name: rook
---
apiVersion: rook.io/v1alpha1
kind: Cluster
metadata:
  name: rook
  namespace: rook
spec:
  dataDirHostPath: /var/lib/rook
  storage:
    useAllNodes: true
    useAllDevices: false
    storeConfig:
      storeType: bluestore
      databaseSizeMB: 1024
      journalSizeMB: 1024

nota: atributga alohida e'tibor berish kerak dataDirHostPath, to'g'ri qiymati qayta ishga tushirilgandan so'ng klasterni saqlash uchun zarur bo'lgan. U Kubernetes xostlarida Rook ma'lumotlari uchun doimiy saqlash joyi sifatida foydalanilgan hollarda, mualliflar ushbu katalogda kamida 5 GB bo'sh disk maydoni bo'lishini tavsiya qiladi.

Faqat konfiguratsiyadan klasterni yaratish va podalar klasterda (nomlar maydonida) yaratilganligiga ishonch hosil qilish qoladi. rook):

kubectl create -f rook-cluster.yaml
kubectl -n rook get pod
NAME                              READY     STATUS    RESTARTS   AGE
rook-api-1511082791-7qs0m         1/1       Running   0          5m
rook-ceph-mgr0-1279756402-wc4vt   1/1       Running   0          5m
rook-ceph-mon0-jflt5              1/1       Running   0          6m
rook-ceph-mon1-wkc8p              1/1       Running   0          6m
rook-ceph-mon2-p31dj              1/1       Running   0          6m
rook-ceph-osd-0h6nb               1/1       Running   0          5m

Yangilash Rook klasteri (yangi versiyagacha) bu bosqichda uning barcha tarkibiy qismlarini ma'lum bir ketma-ketlikda ketma-ket yangilashni talab qiladigan protsedura bo'lib, uni joriy Rook o'rnatilishi to'liq "sog'lom" holatda ekanligiga ishonch hosil qilganingizdan keyingina boshlashingiz mumkin. davlat. Batafsil bosqichma-bosqich ko'rsatmalarni Rook versiyasini 0.5.0 dan 0.5.1 gacha yangilash misolida topish mumkin. loyiha hujjatlari.

O'tgan noyabr oyida Rook blogida nashr etildi taqqoslash hosildorlik EBS bilan. Uning natijalari e'tiborga loyiqdir va qisqacha, ular quyidagilar:

Rook - Kubernetes uchun o'z-o'ziga xizmat ko'rsatish ma'lumotlar do'koni
Rook - Kubernetes uchun o'z-o'ziga xizmat ko'rsatish ma'lumotlar do'koni

istiqbollari

Rookning hozirgi holati alfa, va bugungi kunga qadar eng so'nggi yirik reliz 0.6 versiyasi, 2017 yil noyabr oyida chiqarilgan (hozirgi tuzatish - v0.6.2 - 14 dekabrda chiqdi). 2018 yilning birinchi yarmida allaqachon etuk versiyalarning chiqarilishi kutilmoqda: beta va barqaror (rasmiy ravishda ishlab chiqarishda foydalanishga tayyor).

Shunga ko'ra Yo'l xaritasi Loyihada ishlab chiquvchilar Rook-ni kamida keyingi ikkita nashrda rivojlantirish bo'yicha batafsil tasavvurga ega: 0.7 (uning tayyorligi GitHub trekerida. taxmin qilingan 60% va 0.8 sifatida. Kutilayotgan o'zgarishlar qatoriga Ceph Block va Ceph Object-ni qo'llab-quvvatlashni beta-versiya holatiga o'tkazish, CephFS uchun hajmlarni dinamik ta'minlash, ilg'or logging tizimi, avtomatlashtirilgan klaster yangilanishlari, hajmlar uchun oniy tasvirlarni qo'llab-quvvatlash kiradi.

Rookni raqamga kiritish CNCF loyihalari (hozirgacha eng erta bosqichda - "boshlang'ich darajasi" - bilan teng bog'lovchi и CoreDNS) mahsulotga qiziqish ortib borishining o'ziga xos kafolati hisoblanadi. Bulutli ilovalar dunyosida qanday o'rin egallashi barqaror versiyalar chiqarilgandan so'ng aniqroq bo'ladi, bu albatta Rookga yangi testerlar va foydalanuvchilarni olib keladi.

PS

Shuningdek, bizning blogimizda o'qing:

Manba: www.habr.com

a Izoh qo'shish