Rook - itsepalvelutietovarasto Kubernetesille

Rook - itsepalvelutietovarasto Kubernetesille

Tammikuun 29. päivänä CNCF:n (Cloud Native Computing Foundation) tekninen komitea, Kubernetes, Prometheus ja muut avoimen lähdekoodin tuotteet konttimaailmasta ja pilvipohjaisista tuotteista, ilmoitti hankkeen hyväksymisestä torni heidän riveihinsä. Erinomainen tilaisuus tutustua tähän "hajautetun varaston orkesteriin Kubernetesissa".

Millainen Rook?

torni onko ohjelmisto kirjoitettu Go (jakelija ilmaisella Apache License 2.0 -lisenssillä), joka on suunniteltu tarjoamaan tietovarastoihin automatisoituja toimintoja, jotka tekevät niistä itsehallinto, itseskaalaus ja itsensä parantaminen. Tätä varten Rook automatisoi (Kubernetes-ympäristössä käytettävät tietovarastot): käyttöönoton, käynnistyksen, konfiguroinnin, provisioinnin, skaalauksen, päivitykset, siirrot, palautuksen, seurannan ja resurssien hallinnan.

Projekti on alfa-vaiheessa ja on erikoistunut Ceph-hajautetun tallennusjärjestelmän organisointiin Kubernetes-klustereissa. Kirjoittajat ilmoittavat myös suunnitelmistaan ​​tukea muita tallennusjärjestelmiä, mutta näin ei tapahdu seuraavissa julkaisuissa.

Komponentit ja tekninen laite

Rookin työ Kuberneteksen sisällä perustuu erikoisoperaattoriin (kirjoitimme lisää Kubernetes Operatoreista vuonna tässä artikkelissa), joka automatisoi tallennuskokoonpanon ja toteuttaa sen valvonnan.

Niin, Tornin operaattori näyttää olevan säiliö, joka sisältää kaiken tarvittavan arkiston käyttöönottoa ja myöhempää ylläpitoa varten. Operaattorin tehtäviin kuuluvat:

  • DaemonSetin luominen Ceph-tallennusdemoneille (ceph-osd) yksinkertaisella RADOS-klusterilla;
  • luomalla paloja Ceph-seurantaa varten (jossa ceph-mon, klusterin tilan tarkistaminen; päätösvaltaisuuden saavuttamiseksi useimmissa tapauksissa käytetään kolme kopiota, ja jos jokin niistä kaatuu, uusi nousee);
  • CRD-asiakirjojen hallinta (Mukautetut resurssien määritelmät) hänelle itselleen klusterin, varastoaltaat, esinekauppoja (resurssi- ja palvelujoukot HTTP-pyyntöjen palvelemiseen, jotka suorittavat PUT/GET:n objekteille – ne ovat yhteensopivia S3:n ja Swift API:n kanssa)Ja tiedostojärjestelmät;
  • podien alustaminen kaikkien tarvittavien palvelujen käynnistämiseksi;
  • Rook-agenttien luominen.

Rookin agentit edustavat erilliset podit, jotka on otettu käyttöön jokaisessa Kubernetes-solmussa. Agentin tarkoitus on laajennuksen määritys FlexVolume, joka tarjoaa tukea Kubernetesin tallennusvolyymeille. Agentti toteuttaa tallennustilan toiminnan: yhdistää verkon tallennuslaitteet, liittää taltiot, alustaa tiedostojärjestelmän jne.

Rook - itsepalvelutietovarasto Kubernetesille
Rook-komponenttien paikka ja rooli Kubernetes-klusterijärjestelmän kokonaisjärjestelmässä

Rook tarjoaa kolmenlaisia ​​säilytystyyppejä:

  1. lohko (Tukkia, StorageClass) — kiinnittää varastotilan yhteen tulisijaan;
  2. esine (objekti, ObjectStore) - saatavilla Kubernetes-klusterin sisällä ja ulkopuolella (S3 API:n kautta);
  3. jaettu tiedostojärjestelmä (Jaettu tiedostojärjestelmä, Filesystem) on tiedostojärjestelmä, joka voidaan asentaa lukemista ja kirjoittamista varten useista koteloista.

Rookin sisäosat sisältävät:

  • Mons — palot Ceph-seurantaan (jo mainitun keph-monin kanssa);
  • OSD:t - podit ceph-osd-daemoneilla (Object Storage Daemons);
  • M.G.R. - palkoja demonin kanssa ceph-mgr (Ceph Manager), joka tarjoaa lisävalvontaominaisuuksia ja rajapintoja ulkoisille järjestelmille (valvonta/ohjaus);
  • reagenssivettä (valinnainen) - palot esinevarastolla;
  • MDS (valinnainen) - podit jaetulla tiedostojärjestelmällä.

Rook - itsepalvelutietovarasto Kubernetesille

Kaikki Rook-daemonit (Mons, OSD, MGR, RGW, MDS) on käännetty yhdeksi binaariksi (rook) käynnissä säiliössä.

Tämä lyhyt (12 diaa) voi olla hyödyllinen myös Rook-projektin lyhyeksi esittelyksi. esittely Bassam Tabbaralta (Quantum Corp.:n teknologiajohtaja).

Tornin käyttö

Rook-operaattori tukee täysin Kubernetes-versiota 1.6 ja uudempia (ja osittain vanhempi K8s-julkaisu - 1.5.2). hänen asennus в yksinkertaisin skenaario näyttää tältä:

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

Lisäksi Rook-operaattori on valmis Ruorikaavio, jonka ansiosta asennus voidaan suorittaa seuraavasti:

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

Pieni määrä saatavilla asetusvaihtoehdot (Voit esimerkiksi poistaa tuen käytöstä RBAC, jos tätä ominaisuutta ei käytetä klusterissasi), jotka välitetään helm install parametrin kautta --set key=value[,key=value] (tai tallenna erilliseen YAML-tiedostoon ja lähetä kautta -f values.yaml).

Kun Rook-operaattori on asennettu ja podit käynnistetty sen agenttien kanssa, ei enää tarvitse kuin luoda itse Rook-klusteri, jonka yksinkertaisin kokoonpano näyttää tältä (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

Huomata: määritteeseen tulee kiinnittää erityistä huomiota dataDirHostPath, jonka oikea arvo on tarpeen klusterin tallentamiseksi uudelleenkäynnistyksen jälkeen. Tapauksissa, joissa sitä käytetään Rook-tietojen pysyvänä tallennuspaikkana Kubernetes-isännissä, kirjoittajat suosittelevat, että tässä hakemistossa on vähintään 5 Gt vapaata levytilaa.

Jäljelle jää vain luoda klusteri määrityksistä ja varmistaa, että podit on luotu klusteriin (nimiavaruudessa 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

parantaa Rook-klusteri (uuteen versioon asti) on toimenpide, joka vaatii tässä vaiheessa kaikkien komponenttiensa peräkkäisen päivityksen tietyssä järjestyksessä, ja voit käynnistää sen vasta, kun olet varmistanut, että nykyinen Rook-asennus on täysin "terveessä" osavaltio. Yksityiskohtaiset vaiheittaiset ohjeet Rook-version 0.5.0 päivityksen 0.5.1 esimerkkiä käyttäen löytyvät osoitteesta projektin dokumentaatio.

Viime marraskuussa Rook-blogissa julkaistiin сравнение tuottavuutta EBS:n kanssa. Sen tulokset ovat huomion arvoisia, ja ne ovat lyhyesti seuraavat:

Rook - itsepalvelutietovarasto Kubernetesille
Rook - itsepalvelutietovarasto Kubernetesille

Tulevaisuudennäkymät

Rookin nykyinen tila on alfa, ja viimeisin tähän mennessä suuri julkaisu on 0.6-versio, julkaistu marraskuussa 2017 (nykyinen korjaus - v0.6.2 - ilmestyi 14. joulukuuta). Jo vuoden 2018 ensimmäisellä puoliskolla on odotettavissa kypsempien versioiden julkaisuja: beta ja vakaa (virallisesti valmis käytettäväksi tuotannossa).

Mukaan roadmap -projektissa kehittäjillä on yksityiskohtainen visio Rookin kehityksestä ainakin kahdessa seuraavassa julkaisussa: 0.7 (sen valmius on GitHub-seurannassa arvioidaan 60 %) ja 0.8. Odotettujen muutosten joukossa ovat Ceph Blockin ja Ceph Objectin tuen siirto beta-version tilaan, CephFS:n asemien dynaaminen provisiointi, edistynyt lokijärjestelmä, automaattiset klusteripäivitykset, tuki taltioiden tilannevedoksille.

Rookin ottaminen numeroon CNCF-projektit (toistaiseksi hyvin varhaisessa vaiheessa - "aloitustasolla" - samalla tasolla linkerd и CoreDNS) on eräänlainen tae kasvavasta kiinnostuksesta tuotetta kohtaan. Se, miten se saa jalansijaa pilvisovellusten maailmassa, selviää, kun vakaat versiot julkaistaan, mikä tuo Rookille varmasti uusia testaajia ja käyttäjiä.

PS.

Lue myös blogistamme:

Lähde: will.com

Lisää kommentti