Rook - yon magazen done oto-sèvis pou Kubernetes

Rook - yon magazen done oto-sèvis pou Kubernetes

29 janvye, komite teknik Cloud Native Computing Foundation (CNCF), òganizasyon ki dèyè Kubernetes, Prometheus, ak lòt pwodwi sous louvri ki soti nan veso a ak nwaj natif natal, te anonse sou adopsyon pwojè a Rook nan ran yo. Yon gwo opòtinite pou jwenn konnen "Kubernetes distribye depo orchestrator" sa a pi byen.

Ki sa ki Rook?

Rook — se lojisyèl ki ekri nan Go (distribiye pa anba gratis Apache License 2.0), ki fèt pou bay depo done ak karakteristik otomatik ki fè yo pwòp tèt ou-jere, oto-echèl ak pwòp tèt ou-geri. Pou reyalize sa, Rook otomatize (pou magazen done ki kouri nan yon anviwònman Kubernetes): deplwaman, bootstrapping, konfigirasyon, pwovizyon, dekale, amelyorasyon, migrasyon, failover, siveyans, ak jesyon resous.

Pwojè a se nan etap alfa epi li espesyalize nan orchestration sistèm depo done distribiye Ceph nan grap Kubernetes. Otè yo anonse tou plan pou sipòte lòt sistèm depo, men sa p ap rive nan pwochen degaje yo.

Eleman ak aparèy teknik

Nwayo operasyon Rook anndan Kubernetes se yon operatè espesyal (nou te ekri plis enfòmasyon sou Operatè Kubernetes nan atik sa a), otomatize konfigirasyon an nan depo a ak mete ann aplikasyon siveyans li yo.

Se konsa, Rook operatè se reprezante kòm yon veso ki gen tout bagay ki nesesè pou deplwaman an ak antretyen ki vin apre nan depo a. Responsablite operatè a gen ladan:

  • kreye yon DaemonSet pou demon depo Ceph (ceph-osd) ak yon grap RADOS senp;
  • kreye gous pou siveyans Ceph (soti nan ceph-mon, tcheke estati gwoup la; pou reyalize yon kowòm, nan pifò ka yo twa kopi yo deplwaye, epi si nenpòt nan yo tonbe, yon nouvo ap monte);
  • Jesyon CRDs (Definisyon Resous Custom) pou plis grap, pisin depo, magazen objè yo (yon seri resous ak sèvis pou jere demann HTTP ki fè PUT/GET sou objè - yo konpatib ak S3 ak Swift API)Ak sistèm dosye yo;
  • inisyalizasyon gous pou kòmanse tout sèvis ki nesesè yo;
  • kreye ajan Rook.

Ajan Rook yo reprezante pa gous endividyèl ki deplwaye sou chak ne Kubernetes. Objektif ajan an se konfigirasyon Plugin la FlexVolume, ki bay sipò pou volim depo nan Kubernetes. Ajan an aplike operasyon depo: konekte aparèy depo rezo a, monte volim, fòma sistèm dosye a, elatriye.

Rook - yon magazen done oto-sèvis pou Kubernetes
Kote ak wòl eleman Rook nan konplo an jeneral nan gwoup Kubernetes la

Rook ofri twa kalite depo:

  1. blòk (Bloke, StorageClass) - monte depo nan yon sèl gous;
  2. objè (objè, ObjectStore) - disponib andedan ak deyò gwoup Kubernetes la (via S3 API);
  3. sistèm dosye pataje (Sistèm Fichye Pataje, Filesystem) se yon sistèm fichye ki ka monte pou li ak ekri nan plizyè gous.

Estrikti entèn Rook la gen ladan:

  • Mons — gous pou siveyans Ceph (ak ceph-mon deja mansyone);
  • OSD yo — gous ak demon ceph-osd (Demon depo objè);
  • M.G.R. - gous ak yon move lespri sou ceph-mgr (Ceph Manager), ki bay kapasite siveyans adisyonèl ak koòdone pou sistèm ekstèn (siveyans/jesyon);
  • RGW (si ou vle) - gous ak depo objè;
  • MDS (si ou vle) — gous ak sistèm dosye pataje.

Rook - yon magazen done oto-sèvis pou Kubernetes

Tout demon Rook (Mons, OSDs, MGR, RGW, MDS) yo konpile nan yon sèl binè (rook), kouri nan yon veso.

Pou yon entwodiksyon tou kout sou pwojè Rook, kout sa a (12 glisad) ta ka itil tou: prezantasyon pa Bassam Tabbara (CTO nan Quantum Corp).

Operating Rook

Operatè Rook konplètman sipòte Kubernetes vèsyon 1.6 ak pi wo (ak, pasyèlman, pi gran K8s lage - 1.5.2). Li enstalasyon в senaryo ki pi senp la sanble tankou sa a:

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

Anplis de sa, operatè Rook la prepare Tablo Helm, gras a ki enstalasyon an ka fèt jan sa a:

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

Gen yon ti kantite opsyon personnalisation (pa egzanp, ou ka enfim sipò RBAC, si karakteristik sa a pa itilize nan gwoup ou a), ki pase yo helm install atravè paramèt --set key=value[,key=value] (oswa estoke li nan yon dosye separe YAML epi transmèt li atravè -f values.yaml).

Apre enstale operatè Rook la ak lanse gous ak ajan li yo, li rete pou kreye gwoup Rook la li menm, konfigirasyon ki pi senp lan ki sanble sa a (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

Note: atansyon espesyal yo ta dwe peye atribi a dataDirHostPath, valè kòrèk la ki nesesè pou konsève pou gwoup la apre rdemare. Pou ka itilize kote li itilize kòm yon kote depo pèmanan pou done Rook sou lame Kubernetes, otè yo rekòmande pou gen omwen 5 GB espas disk gratis nan anyè sa a.

Tout sa ki rete se aktyèlman kreye gwoup la nan konfigirasyon an epi asire w ke gous yo te kreye nan gwoup la (nan namespace la. 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

Upgrade Gwoup Rook (nan nouvo vèsyon an) se yon pwosedi ki nan etap sa a mande aktyalizasyon sekans tout eleman li yo nan yon sekans sèten, epi li ka sèlman kòmanse apre ou fin asire w ke enstalasyon Rook aktyèl la konplètman "sante". Ou ka jwenn yon enstriksyon detaye etap pa etap sou amelyore vèsyon Rook 0.5.0 a 0.5.1 nan dokiman pwojè yo.

Novanm pase a, blog Rook te pibliye konparezon pwodiktivite ak EBS. Rezilta li yo merite atansyon, men nan ti bout tan, yo se jan sa a:

Rook - yon magazen done oto-sèvis pou Kubernetes
Rook - yon magazen done oto-sèvis pou Kubernetes

Kandida

Estati aktyèl Rook se alpha, ak dènye gwo lage li jiska dat se vèsyon 0.6, lage nan Novanm 2017 (kouran ranje - v0.6.2 — te lage nan dat 14 desanm). Vèsyon plis matirite yo espere yo dwe lage nan premye mwatye nan 2018: beta ak ki estab (ofisyèlman pare pou itilize nan pwodiksyon).

Dapre plan pwojè, devlopè yo gen yon vizyon detaye pou devlopman Rook nan omwen de degaje k ap vini yo: 0.7 (preparasyon li se nan tracker GitHub la. estime kòm 60%) ak 0.8. Chanjman ki espere gen ladan yo deplase Ceph Block ak Ceph Object sipò nan estati beta, pwovizyon dinamik nan volim pou CephFS, yon sistèm anrejistreman avanse, mizajou gwoup otomatik, ak sipò pou snapshots pou volim.

Akseptasyon Rook nan ran yo CNCF pwojè yo (jiskaprezan nan etap la byen bonè - "nivo kòmansman", - nan par ak linkerd и CoreDNS) se yon kalite garanti enterè k ap grandi nan pwodwi a. Konbyen li pral jwenn yon pye nan mond lan nan aplikasyon pou nwaj yo pral vin pi klè yon fwa vèsyon ki estab parèt, ki pral sètènman pote Rook nouvo "testeur" ak itilizatè yo.

PS

Li tou sou blog nou an:

Sous: www.habr.com

Achte hosting serye pou sit ki gen pwoteksyon DDoS, sèvè VPS VDS 🔥 Achte yon hébergement sit entènèt serye ak pwoteksyon DDoS, sèvè VPS VDS | ProHoster