
El passat 29 de gener, el comitè tècnic de la CNCF (Cloud Native Computing Foundation), l'organització que hi ha darrere de Kubernetes, Prometheus i altres productes de codi obert del món dels contenidors i cloud native, sobre l'acceptació del projecte torre a les seves files. Una excel·lent oportunitat per conèixer aquest "orquestrador d'emmagatzematge distribuït a Kubernetes".
Quina mena de torre?
és un programari escrit en Go ( sota la llicència gratuïta d'Apache 2.0), dissenyada per proporcionar als magatzems de dades funcions automatitzades que els autogestió, autoescalada i autocuració. Per fer-ho, Rook automatitza (per a magatzems de dades utilitzats en un entorn Kubernetes): desplegament, arrencada, configuració, subministrament, escalat, actualitzacions, migracions, recuperació de desastres, monitorització i gestió de recursos.
El projecte es troba en l'etapa alfa i està especialitzat en l'orquestració del sistema d'emmagatzematge distribuït Ceph en clústers Kubernetes. Els autors també anuncien plans per donar suport a altres sistemes d'emmagatzematge, però això no passarà en els propers llançaments.
Components i dispositiu tècnic
El treball de Rook dins de Kubernetes es basa en un operador especial (hem escrit més informació sobre els operadors de Kubernetes a ), que automatitza la configuració de l'emmagatzematge i implementa el seu seguiment.
Per tant, Operador de torre sembla ser un contenidor que conté tot el necessari per al desplegament i el posterior manteniment del dipòsit. Les responsabilitats de l'operador inclouen:
- creant un DaemonSet per als dimonis d'emmagatzematge Ceph () amb un simple clúster RADOS;
- creant pods per al monitoratge de Ceph (a partir de , comprovant l'estat del clúster; per a quòrum, en la majoria dels casos es despleguen tres còpies, i si alguna d'elles cau, n'aixeca una de nova);
- gestió de CRD () per ell mateix , , (conjunts de recursos i serveis per atendre sol·licituds HTTP que realitzen PUT/GET en objectes; són compatibles amb S3 i Swift API)I ;
- inicialitzar pods per llançar tots els serveis necessaris;
- creació d'agents Rook.
Agents de Rook es representen per pods separats que es despleguen a cada node de Kubernetes. El propòsit de l'agent és la configuració del connector , que proporciona suport per als volums d'emmagatzematge a Kubernetes. L'agent implementa el funcionament de l'emmagatzematge: connecta dispositius d'emmagatzematge en xarxa, munta volums, formata el sistema de fitxers, etc.

Lloc i funció dels components de Rook a l'esquema general de clúster de Kubernetes
Rook ofereix tres tipus d'emmagatzematge:
- (Bloquejar,
StorageClass) — munta l'emmagatzematge en una sola llar; - (Objecte,
ObjectStore) - disponible dins i fora del clúster Kubernetes (mitjançant l'API S3); - (Sistema de fitxers compartit,
Filesystem) és un sistema de fitxers que es pot muntar per llegir i escriure des de múltiples pods.
Les parts internes de la torre inclouen:
- Mons — beines per al seguiment de Ceph (amb el ja esmentat ceph-mon);
- OSD - beines amb dimonis ceph-osd (dimonis d'emmagatzematge d'objectes);
- M.G.R. - beines amb un dimoni (Ceph Manager), que proporciona capacitats de monitorització i interfícies addicionals per a sistemes externs (monitorització/control);
- RGW (opcional) - beines amb emmagatzematge d'objectes;
- MDS (opcional) - pods amb sistema de fitxers compartit.

Tots els dimonis Rook (Mons, OSD, MGR, RGW, MDS) es compilen en un únic binari (rook) corrent en un contenidor.
Per a una breu introducció al projecte Rook, aquest curt (12 diapositives) també pot ser útil. de Bassam Tabbara (CTO de Quantum Corp).
Funcionament de la torre
L'operador Rook és totalment compatible amb Kubernetes versió 1.6 i superior (i, parcialment, la versió anterior de K8s - 1.5.2). El seu instal·lació в es veu així:
cd cluster/examples/kubernetes
kubectl create -f rook-operator.yaml
kubectl create -f rook-cluster.yamlA més, l'operador Rook està preparat , gràcies al qual la instal·lació es pot dur a terme així:
helm repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook Petita quantitat disponible (per exemple, podeu desactivar el suport , si aquesta característica no s'utilitza al vostre clúster), que es transmeten helm install mitjançant paràmetre --set key=value[,key=value] (o emmagatzemar en un fitxer YAML independent i transmetre mitjançant -f values.yaml).
Després d'instal·lar l'operador Rook i llançar pods amb els seus agents, només queda crear el propi clúster Rook, la configuració més senzilla del qual sembla aquesta (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: 1024Nota: cal prestar especial atenció a l'atribut dataDirHostPath, el valor correcte del qual és necessari per desar el clúster després dels reinicis. Per als casos en què s'utilitza com a ubicació d'emmagatzematge permanent per a dades de Rook als amfitrions de Kubernetes, els autors recomanen tenir almenys 5 GB d'espai lliure en aquest directori.
Tot el que queda és crear realment el clúster des de la configuració i assegurar-se que els pods s'han creat al clúster (a l'espai de noms 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 5mActualització El clúster de Rook (fins a una nova versió) és un procediment que en aquesta fase requereix l'actualització seqüencial de tots els seus components en una seqüència determinada, i només podeu iniciar-lo després d'haver-vos assegurat que la instal·lació actual de Rook està completament "saluda". estat. Es poden trobar instruccions detallades pas a pas amb l'exemple d'actualització de la versió 0.5.0 a la 0.5.1 de Rook a .
El mes de novembre passat al blog de la Torre comparació rendiment amb EBS. Els seus resultats mereixen atenció i, en resum, són els següents:


Perspectives
L'estat actual de Rook és alfa, i el darrer llançament important fins ara és , publicat el novembre de 2017 (correcció actual - — va sortir el 14 de desembre). Ja durant el primer semestre de 2018 s'esperen llançaments de versions més madures: beta i estable (oficialment llestes per utilitzar-les en producció).
Segons projecte, els desenvolupadors tenen una visió detallada del desenvolupament de Rook almenys en els dos propers llançaments: 0.7 (la seva preparació es troba al rastrejador de GitHub com el 60%) i el 0.8. Entre els canvis esperats hi ha la transferència de suport per a Ceph Block i Ceph Object a l'estat de versió beta, subministrament dinàmic de volums per a CephFS, un sistema de registre avançat, actualitzacions de clúster automatitzades, suport per a instantànies de volums.
Portant Rook al nombre (fins ara en l'etapa molt primerenca - "nivell d'inici" - a la par и ) és una mena de garantia d'interès creixent pel producte. Com s'assentarà al món de les aplicacions al núvol es farà més clar un cop es publiquin versions estables, cosa que sens dubte portarà nous provadors i usuaris a Rook.
PS
Llegeix també al nostre blog:
- «»;
- «»;
- «»;
- «»;
- «».
Font: www.habr.com
