Rook β€” «самообслуТиваСмоС» Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для Kubernetes

Rook — «ΡΠ°ΠΌΠΎΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ΅» Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для Kubernetes

29 января тСхничСский ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ CNCF (Cloud Native Computing Foundation), стоящСй Π·Π° Kubernetes, Prometheus ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Open Source-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌΠΈ ΠΈΠ· ΠΌΠΈΡ€Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ cloud native, объявил ΠΎ принятии ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Rook Π² свои ряды. ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ²ΠΎΠ΄ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅ с этим «оркСстровщиком систСм распрСдСлённого хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² KubernetesΒ».

Π§Ρ‚ΠΎ Π·Π° Rook?

Rook β€” это написанноС Π½Π° Go ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС (распространяСтся ΠΏΠΎ свободной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ Apache License 2.0), ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ для надСлСния Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ Π΄Π°Π½Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ функциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈΡ… самоуправляСмыми, ΡΠ°ΠΌΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΈ ΡΠ°ΠΌΠΎΠ²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ. Для этого Rook Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ (для Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ Π΄Π°Π½Π½Ρ‹Ρ…, примСняСмых Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Kubernetes): Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅, bootstrapping, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, provisioning, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, обновлСния, ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ, восстановлСниС послС сбоСв, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСсурсами.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ находится Π² Π°Π»ΡŒΡ„Π°-стадии ΠΈ спСциализируСтся Π½Π° оркСстровкС распрСдСлённой систСмы хранСния Π΄Π°Π½Π½Ρ‹Ρ… Ceph Π² кластСрах Kubernetes. Авторы Π·Π°ΡΠ²Π»ΡΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠ»Π°Π½Π°Ρ… ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм хранСния, Π½ΠΎ это случится Π½Π΅ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΡ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ….

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ тСхничСскоС устройство

Π’ основС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Rook Π²Π½ΡƒΡ‚Ρ€ΠΈ Kubernetes β€” ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Kubernetes Operators ΠΌΡ‹ писали Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅), Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³.

Π˜Ρ‚Π°ΠΊ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Rook прСдставляСтся ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для развёртывания ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ обслуТивания Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. Π‘Ρ€Π΅Π΄ΠΈ обязанностСй ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

  • созданиС DaemonSet для Π΄Π΅ΠΌΠΎΠ½ΠΎΠ² хранСния Ceph (ceph-osd) с простым кластСром RADOS;
  • созданиС ΠΏΠΎΠ΄ΠΎΠ² для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Ceph (с ceph-mon, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΌΠΈ состояниС кластСра; для ΠΊΠ²ΠΎΡ€ΡƒΠΌΠ° Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ экзСмпляра, ΠΈ ΠΏΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ любого ΠΈΠ· Π½ΠΈΡ… поднимаСтся Π½ΠΎΠ²Ρ‹ΠΉ);
  • ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ CRDs (Custom Resource Definitions) для самого кластСра, ΠΏΡƒΠ»ΠΎΠ² хранСния, object stores (Π½Π°Π±ΠΎΡ€ΠΎΠ² рСсурсов ΠΈ сСрвисов для обслуТивания HTTP-запросов, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… PUT/GET для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², β€” ΠΎΠ½ΠΈ совмСстимы с S3 ΠΈ Swift API), Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм;
  • инициализация ΠΏΠΎΠ΄ΠΎΠ² для запуска всСх Π½ΡƒΠΆΠ½Ρ‹Ρ… сСрвисов;
  • созданиС Π°Π³Π΅Π½Ρ‚ΠΎΠ² Rook.

АгСнты Rook прСдставлСны ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΠ·Π»Π΅ Kubernetes. ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Π³Π΅Π½Ρ‚Π° β€” конфигурация ΠΏΠ»Π°Π³ΠΈΠ½Π° FlexVolume, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ‚ΠΎΠΌΠΎΠ² хранСния Π² Kubernetes. АгСнт Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°: ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ сСтСвыС устройства хранСния, ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠΌΠ°, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму ΠΈ Ρ‚.ΠΏ.

Rook — «ΡΠ°ΠΌΠΎΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ΅» Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для Kubernetes
ΠœΠ΅ΡΡ‚ΠΎ ΠΈ Ρ€ΠΎΠ»ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Rook Π² ΠΎΠ±Ρ‰Π΅ΠΉ схСмС кластСра Kubernetes

Rook ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰:

  1. Π±Π»ΠΎΡ‡Π½ΠΎΠ΅ (Block, StorageClass) β€” ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊ СдинствСнному ΠΏΠΎΠ΄Ρƒ;
  2. ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ΅ (Object, ObjectStore) β€” доступно Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ Π²Π½Π΅ кластСра Kubernetes (ΠΏΠΎ S3 API);
  3. раздСляСмая Π€Π‘ (Shared File System, Filesystem) β€” файловая систСма, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись ΠΈΠ· мноТСства ΠΏΠΎΠ΄ΠΎΠ².

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство Rook Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя:

  • Mons β€” ΠΏΠΎΠ΄Ρ‹ для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Ceph (с ΡƒΠΆΠ΅ упомянутыми ceph-mon);
  • OSDs β€” ΠΏΠΎΠ΄Ρ‹ с Π΄Π΅ΠΌΠΎΠ½Π°ΠΌΠΈ ceph-osd (Object Storage Daemons);
  • MGR β€” ΠΏΠΎΠ΄Ρ‹ с Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ ceph-mgr (Ceph Manager), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ интСрфСйсы для Π²Π½Π΅ΡˆΠ½ΠΈΡ… систСм (ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°/управлСния);
  • RGW (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) β€” ΠΏΠΎΠ΄Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ;
  • MDS (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) β€” ΠΏΠΎΠ΄Ρ‹ с раздСляСмой Π€Π‘.

Rook — «ΡΠ°ΠΌΠΎΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ΅» Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для Kubernetes

ВсС Π΄Π΅ΠΌΠΎΠ½Ρ‹ Rook (Mons, OSDs, MGR, RGW, MDS) скомпилированы Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ (rook), запускаСмый Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅.

Для ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ прСдставлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Rook ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΆΠ΅ эта нСбольшая (12 слайдов) прСзСнтация ΠΎΡ‚ Bassam Tabbara (CTO Π² Quantum Corp).

Эксплуатация Rook

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Rook ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Kubernetes вСрсии 1.6 ΠΈ Π²Ρ‹ΡˆΠ΅ (ΠΈ, частично, Π±ΠΎΠ»Π΅Π΅ старый Ρ€Π΅Π»ΠΈΠ· K8s β€” 1.5.2). Π•Π³ΠΎ инсталляция Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ сцСнарии выглядит Ρ‚Π°ΠΊ:

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

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Rook ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ Helm chart, благодаря Ρ‡Π΅ΠΌΡƒ инсталляция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΈ Ρ‚Π°ΠΊ:

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 ΠΈ запуска ΠΏΠΎΠ΄ΠΎΠ² с Π΅Π³ΠΎ Π°Π³Π΅Π½Ρ‚Π°ΠΌΠΈ остаётся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сам кластСр 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 Π½Π° хостах Kubernetes Π°Π²Ρ‚ΠΎΡ€Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² этом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ хотя Π±Ρ‹ 5 Π“Π± свободного дискового пространства.

ΠžΡΡ‚Π°Ρ‘Ρ‚ΡΡ собствСнно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ кластСр ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ‹ создались Π² кластСрС (Π² пространствС ΠΈΠΌΡ‘Π½ 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 ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’ ноябрС ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° Π² Π±Π»ΠΎΠ³Π΅ Rook Π±Ρ‹Π»ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ сравнСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с EBS. Π•Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ достойны внимания, Π° Ссли совсСм Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅, Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΎΠ²Ρ‹:

Rook — «ΡΠ°ΠΌΠΎΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ΅» Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для Kubernetes
Rook — «ΡΠ°ΠΌΠΎΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ΅» Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для Kubernetes

ΠŸΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²Ρ‹

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ статус Rook β€” alpha, Π° послСдним ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌ Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ Π½Π° сСгодняшний дСнь являСтся вСрсия 0.6, выпущСнная Π² ноябрС 2017 Π³ΠΎΠ΄Π° (Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ исправлСниС β€” v0.6.2 β€” Π²Ρ‹ΡˆΠ»ΠΎ 14 дСкабря). Π£ΠΆΠ΅ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ 2018 Π³ΠΎΠ΄Π° ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ΡΡ Ρ€Π΅Π»ΠΈΠ·Ρ‹ Π±ΠΎΠ»Π΅Π΅ Π·Ρ€Π΅Π»Ρ‹Ρ… вСрсий: Π±Π΅Ρ‚Ρ‹ ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ (ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ для использования Π² production).

Богласно roadmap ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ Rook ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π² Π΄Π²ΡƒΡ… Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΡ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ…: 0.7 (Π΅Π³ΠΎ Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ Π² Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π΅ GitHub оцСниваСтся ΠΊΠ°ΠΊ 60 %) ΠΈ 0.8. Π‘Ρ€Π΅Π΄ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ β€” ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ceph Block ΠΈ Ceph Object Π² статус Π±Π΅Ρ‚Π°-вСрсии, динамичСский provisioning Ρ‚ΠΎΠΌΠΎΠ² для CephFS, развитая систСма логирования, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ обновлСния кластСра, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ² для Ρ‚ΠΎΠΌΠΎΠ².

ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΈΠ΅ Rook Π² число ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² CNCF (ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π½Π° самом Ρ€Π°Π½Π½Π΅ΠΌ этапС β€” Β«inception-levelΒ», β€” Π½Π°Ρ€Π°Π²Π½Π΅ с linkerd ΠΈ CoreDNS) являСтся своСобразной Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠ΅ΠΉ растущСго интСрСса ΠΊ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ. Насколько ΠΎΠ½ закрСпится Π² ΠΌΠΈΡ€Π΅ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, станСт Π»ΡƒΡ‡ΡˆΠ΅ ясно послС появлСния ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… вСрсий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, бСзусловно, принСсут Rook Π½ΠΎΠ²Ρ‹Ρ… «испытатСлСй» ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

P.S.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com