Rook - продавница за податоци за самопослужување за Kubernetes

Rook - продавница за податоци за самопослужување за Kubernetes

На 29 јануари, техничкиот комитет на CNCF (Cloud Native Computing Foundation), организацијата зад Kubernetes, Prometheus и други производи со отворен код од светот на контејнерите и мајчиниот облак, објавија за прифаќање на проектот Топ во нивните редови. Одлична можност да се запознаете со овој „оркестратор на дистрибуирани складишта во Кубернетес“.

Каков Рок?

Топ е софтвер напишан во Go (дистрибуирани од под бесплатната лиценца Apache 2.0), дизајнирана да обезбеди складишта на податоци со автоматизирани функции што ги прават самоуправување, само-скалирање и само-лекување. За да го направите ова, Rook автоматизира (за складишта на податоци што се користат во околина на Kubernetes): распоредување, подигање, конфигурација, обезбедување, скалирање, ажурирања, миграции, обновување при катастрофи, следење и управување со ресурси.

Проектот е во алфа фаза и е специјализиран за оркестрирање на дистрибуираниот систем за складирање Ceph во кластерите Кубернетес. Авторите најавуваат и планови за поддршка на други системи за складирање, но тоа нема да се случи во следните изданија.

Компоненти и технички уред

Работата на Рук во Кубернетс се заснова на посебен оператор (напишавме повеќе за Kubernetes Operators во овој напис), што ја автоматизира конфигурацијата за складирање и го спроведува неговото следење.

Значи, Рок оператор се чини дека е контејнер кој содржи се што е потребно за распоредување и последователно одржување на складиштето. Одговорностите на операторот вклучуваат:

  • создавање на DaemonSet за демони за складирање на Ceph (ceph-osd) со едноставен кластер RADOS;
  • создавање мешунки за следење на Ceph (од цеф-мон, проверка на статусот на кластерот; за кворум, во повеќето случаи се распоредуваат три примероци, а ако некоја од нив падне, се крева нова);
  • управување со ЦРБ (Прилагодени дефиниции за ресурси) за себе Грозд, базени за складирање, продавници за предмети (група ресурси и услуги за опслужување на HTTP барања кои вршат PUT/GET на објекти - тие се компатибилни со S3 и Swift API)И датотечни системи;
  • иницијализирање на мешунките за лансирање на сите потребни услуги;
  • создавање на агенти на Rook.

Агенти на Рук се претставени со посебни подлоги кои се распоредени на секој Kubernetes јазол. Целта на агентот е конфигурација на приклучокот FlexVolume, кој обезбедува поддршка за волумени за складирање во Kubernetes. Агентот ја спроведува работата на складиштето: поврзува мрежни уреди за складирање, монтира томови, го форматира датотечен систем итн.

Rook - продавница за податоци за самопослужување за Kubernetes
Место и улога на компонентите на Rook во севкупната шема на кластерот Кубернетес

Rook нуди три типа на складирање:

  1. блок (Блокирање на, StorageClass) — го монтира складиштето на едно огниште;
  2. објект (Објектот, ObjectStore) - достапен внатре и надвор од кластерот Kubernetes (преку S3 API);
  3. споделен датотечен систем (Заеднички датотечен систем, Filesystem) е датотечен систем што може да се монтира за читање и пишување од повеќе подлоги.

Внатрешноста на Rook вклучува:

  • Монс — мешунки за мониторинг на Ceph (со веќе споменатиот ceph-mon);
  • ОСД - мешунки со ceph-osd демони (Object Storage Daemons);
  • МГР - мешунки со демон ceph-mgr (Ceph Manager), кој обезбедува дополнителни мониторинг способности и интерфејси за надворешни системи (мониторинг/контрола);
  • RGW (изборен) - мешунки со складирање на предмети;
  • MDS (изборен) - мешунки со споделен датотечен систем.

Rook - продавница за податоци за самопослужување за Kubernetes

Сите демони на Rook (Mons, OSD, MGR, RGW, MDS) се компајлираат во еден бинарен (rook) работи во контејнер.

За краток вовед во проектот Rook, овој краток (12 слајдови) исто така може да биде корисен. презентација од Басам Табара (CTO во Quantum Corp).

Ракување со Rook

Операторот Rook целосно ја поддржува Kubernetes верзијата 1.6 и повисока (и, делумно, постарото издание на K8 - 1.5.2). Неговата инсталација в наједноставно сценарио изгледа вака:

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

Покрај тоа, операторот Rook е подготвен Табела на кормила, благодарение на што инсталацијата може да се изврши вака:

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

Достапна е мала количина опции за поставување (на пример, можете да ја оневозможите поддршката RBAC, ако оваа функција не се користи во вашиот кластер), кои се пренесуваат на helm install преку параметар --set key=value[,key=value] (или складирајте во посебна датотека YAML и пренесете преку -f values.yaml).

По инсталирањето на операторот Rook и лансирањето на pods со неговите агенти, останува само да се создаде самиот Rook кластер, чија наједноставна конфигурација изгледа вака (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

Имајте на ум: посебно внимание треба да се посвети на атрибутот dataDirHostPath, чија точна вредност е неопходна за зачувување на кластерот по рестартирање. За случаи кога се користи како трајна локација за складирање на податоците на Rook на домаќините на Кубернетес, авторите препорачуваат да има најмалку 5 GB слободен простор на дискот во овој директориум.

Останува само да се создаде кластерот од конфигурацијата и да се увериме дека мешунките се создадени во кластерот (во именскиот простор 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

Надградба Rook кластерот (до нова верзија) е постапка која во оваа фаза бара последователно ажурирање на сите негови компоненти во одредена секвенца, а можете да го започнете дури откако ќе се уверите дека моменталната инсталација на Rook е целосно „здрава“ држава. Детални инструкции чекор-по-чекор користејќи го примерот за ажурирање на Rook верзијата 0.5.0 до 0.5.1 може да се најдат во проектна документација.

Минатиот ноември на блогот Рук беше објавено споредба продуктивноста со EBS. Неговите резултати се вредни за внимание, а накратко, тие се како што следува:

Rook - продавница за податоци за самопослужување за Kubernetes
Rook - продавница за податоци за самопослужување за Kubernetes

Изгледите

Моменталниот статус на Рук е алфа, а последното големо издание досега е верзија 0.6, објавен во ноември 2017 година (тековна корекција - v0.6.2 — излезе на 14 декември). Веќе во првата половина на 2018 година се очекуваат изданија на позрели верзии: бета и стабилни (официјално подготвени за употреба во производство).

Според патоказот проект, програмерите имаат детална визија за развојот на Rook во најмалку следните две изданија: 0.7 (неговата подготвеност е во тракерот GitHub проценето како 60%) и 0.8. Меѓу очекуваните промени се трансферот на поддршката за Ceph Block и Ceph Object во статус на бета верзија, динамично обезбедување на томови за CephFS, напреден систем за логирање, автоматизирани ажурирања на кластери, поддршка за снимки за тома.

Внесување на Рук во бројот CNCF проекти (досега во многу рана фаза - „почетно ниво“ - на исто ниво со поврзувач и CoreDNS) е еден вид гаранција за зголемен интерес за производот. Како ќе добие основа во светот на апликациите за облак ќе стане појасно откако ќе бидат објавени стабилните верзии, што секако ќе донесе нови тестери и корисници во Rook.

PS

Прочитајте и на нашиот блог:

Извор: www.habr.com

Додадете коментар