
29 ΡΠ½Π²Π°ΡΡ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΈΡΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ CNCF (Cloud Native Computing Foundation), ΡΡΠΎΡΡΠ΅ΠΉ Π·Π° Kubernetes, Prometheus ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Open Source-ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌΠΈ ΠΈΠ· ΠΌΠΈΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΈ cloud native, ΠΎ ΠΏΡΠΈΠ½ΡΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Rook Π² ΡΠ²ΠΎΠΈ ΡΡΠ΄Ρ. ΠΡΠ»ΠΈΡΠ½ΡΠΉ ΠΏΠΎΠ²ΠΎΠ΄ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅ Ρ ΡΡΠΈΠΌ Β«ΠΎΡΠΊΠ΅ΡΡΡΠΎΠ²ΡΠΈΠΊΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π² KubernetesΒ».
Π§ΡΠΎ Π·Π° Rook?
β ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π½Π° Go ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ( ΠΏΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ Apache License 2.0), ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠ΅ Π΄Π»Ρ Π½Π°Π΄Π΅Π»Π΅Π½ΠΈΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ Π΄Π°Π½Π½ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΠΈΡ ΡΠ°ΠΌΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ, ΡΠ°ΠΌΠΎΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠΌΠΈ ΠΈ ΡΠ°ΠΌΠΎΠ²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»ΠΈΠ²Π°ΡΡΠΈΠΌΠΈΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Rook Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅Ρ (Π΄Π»Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ Kubernetes): ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅, bootstrapping, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, provisioning, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ, Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΠ΅Π², ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ.
ΠΡΠΎΠ΅ΠΊΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π°Π»ΡΡΠ°-ΡΡΠ°Π΄ΠΈΠΈ ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΎΡΠΊΠ΅ΡΡΡΠΎΠ²ΠΊΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Ceph Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ°Ρ Kubernetes. ΠΠ²ΡΠΎΡΡ Π·Π°ΡΠ²Π»ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎ ΠΏΠ»Π°Π½Π°Ρ ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ, Π½ΠΎ ΡΡΠΎ ΡΠ»ΡΡΠΈΡΡΡ Π½Π΅ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΡ ΡΠ΅Π»ΠΈΠ·Π°Ρ .
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ
Π ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π±ΠΎΡΡ Rook Π²Π½ΡΡΡΠΈ Kubernetes β ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Kubernetes Operators ΠΌΡ ΠΏΠΈΡΠ°Π»ΠΈ Π² ), Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ Π΅Π³ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³.
ΠΡΠ°ΠΊ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Rook ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. Π‘ΡΠ΅Π΄ΠΈ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°:
- ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ DaemonSet Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ² Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Ceph () Ρ ΠΏΡΠΎΡΡΡΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠΌ RADOS;
- ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Ceph (Ρ , ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΠΌΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°; Π΄Π»Ρ ΠΊΠ²ΠΎΡΡΠΌΠ° Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΡΡΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΠΈ ΠΏΡΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ);
- ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ CRDs () Π΄Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ , , (Π½Π°Π±ΠΎΡΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π΄Π»Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ PUT/GET Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², β ΠΎΠ½ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Ρ S3 ΠΈ Swift API), Π° ΡΠ°ΠΊΠΆΠ΅ ;
- ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ΄ΠΎΠ² Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²ΡΠ΅Ρ Π½ΡΠΆΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²;
- ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π³Π΅Π½ΡΠΎΠ² Rook.
ΠΠ³Π΅Π½ΡΡ Rook ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ΄Π°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ·Π»Π΅ Kubernetes. ΠΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°Π³Π΅Π½ΡΠ° β ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠ»Π°Π³ΠΈΠ½Π° , ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠΎΠΌΠΎΠ² Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π² Kubernetes. ΠΠ³Π΅Π½Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°: ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ, ΠΌΠΎΠ½ΡΠΈΡΡΠ΅Ρ ΡΠΎΠΌΠ°, ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Ρ.ΠΏ.

ΠΠ΅ΡΡΠΎ ΠΈ ΡΠΎΠ»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Rook Π² ΠΎΠ±ΡΠ΅ΠΉ ΡΡ
Π΅ΠΌΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kubernetes
Rook ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΡΠΈ Π²ΠΈΠ΄Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ:
- (Block,
StorageClass) β ΠΌΠΎΠ½ΡΠΈΡΡΠ΅Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΊ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ΄Ρ; - (Object,
ObjectStore) β Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π²Π½ΡΡΡΠΈ ΠΈ Π²Π½Π΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kubernetes (ΠΏΠΎ S3 API); - (Shared File System,
Filesystem) β ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠΎΠ΄ΠΎΠ².
ΠΠ½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Rook Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ:
- Mons β ΠΏΠΎΠ΄Ρ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Ceph (Ρ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΌΠΈ ceph-mon);
- OSDs β ΠΏΠΎΠ΄Ρ Ρ Π΄Π΅ΠΌΠΎΠ½Π°ΠΌΠΈ ceph-osd (Object Storage Daemons);
- MGR β ΠΏΠΎΠ΄Ρ Ρ Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ (Ceph Manager), ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ (ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°/ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ);
- RGW (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) β ΠΏΠΎΠ΄Ρ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ;
- MDS (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) β ΠΏΠΎΠ΄Ρ Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ Π€Π‘.

ΠΡΠ΅ Π΄Π΅ΠΌΠΎΠ½Ρ 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 repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook ΠΠΌΠ΅Π΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ , Π΅ΡΠ»ΠΈ ΡΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² 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 β alpha, Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΠΊΡΡΠΏΠ½ΡΠΌ ΡΠ΅Π»ΠΈΠ·ΠΎΠΌ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ , Π²ΡΠΏΡΡΠ΅Π½Π½Π°Ρ Π² Π½ΠΎΡΠ±ΡΠ΅ 2017 Π³ΠΎΠ΄Π° (Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ β β Π²ΡΡΠ»ΠΎ 14 Π΄Π΅ΠΊΠ°Π±ΡΡ). Π£ΠΆΠ΅ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ 2018 Π³ΠΎΠ΄Π° ΠΎΠΆΠΈΠ΄Π°ΡΡΡΡ ΡΠ΅Π»ΠΈΠ·Ρ Π±ΠΎΠ»Π΅Π΅ Π·ΡΠ΅Π»ΡΡ Π²Π΅ΡΡΠΈΠΉ: Π±Π΅ΡΡ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ (ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ Π³ΠΎΡΠΎΠ²ΠΎΠΉ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² production).
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π΅ΡΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΡ Rook ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π² Π΄Π²ΡΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΡ ΡΠ΅Π»ΠΈΠ·Π°Ρ : 0.7 (Π΅Π³ΠΎ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΡ Π² ΡΡΠ΅ΠΊΠ΅ΡΠ΅ GitHub ΠΊΠ°ΠΊ 60 %) ΠΈ 0.8. Π‘ΡΠ΅Π΄ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ β ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Ceph Block ΠΈ Ceph Object Π² ΡΡΠ°ΡΡΡ Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ provisioning ΡΠΎΠΌΠΎΠ² Π΄Π»Ρ CephFS, ΡΠ°Π·Π²ΠΈΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ½Π°ΠΏΡΠΎΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠΌΠΎΠ².
ΠΡΠΈΠ½ΡΡΠΈΠ΅ Rook Π² ΡΠΈΡΠ»ΠΎ (ΠΏΠΎΠΊΠ° ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ ΡΠ°Π½Π½Π΅ΠΌ ΡΡΠ°ΠΏΠ΅ β Β«inception-levelΒ», β Π½Π°ΡΠ°Π²Π½Π΅ Ρ ΠΈ ) ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠ΅ΠΎΠ±ΡΠ°Π·Π½ΠΎΠΉ Π³Π°ΡΠ°Π½ΡΠΈΠ΅ΠΉ ΡΠ°ΡΡΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ° ΠΊ ΠΏΡΠΎΠ΄ΡΠΊΡΡ. ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΡΡ Π² ΠΌΠΈΡΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠ°Π½Π΅Ρ Π»ΡΡΡΠ΅ ΡΡΠ½ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΠΏΡΠΈΠ½Π΅ΡΡΡ Rook Π½ΠΎΠ²ΡΡ Β«ΠΈΡΠΏΡΡΠ°ΡΠ΅Π»Π΅ΠΉΒ» ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
P.S.
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- «»;
- «»;
- «»;
- «»;
- «».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com
