ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° Ceph Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ към Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡŠΡ‚ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ (CSI) Π΅ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ интСрфСйс ΠΌΠ΅ΠΆΠ΄Ρƒ Kubernetes ΠΈ систСмитС Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅. Π’Π΅Ρ‡Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ…ΠΌΠ΅ Π·Π° Ρ‚ΠΎΠ²Π° Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΊΠ°Π·Π°, Π° днСс Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΎΡ‚Π±Π»ΠΈΠ·ΠΎ комбинацията ΠΎΡ‚ CSI ΠΈ Ceph: Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ Ceph Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ към ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes.
Бтатията прСдоставя Ρ€Π΅Π°Π»Π½ΠΈ, ΠΌΠ°ΠΊΠ°Ρ€ ΠΈ Π»Π΅ΠΊΠΎ опростСни ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° ΠΏΠΎ-лСсно Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ°Π½Π΅. НиС Π½Π΅ обмислямС инсталиранС ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° Ceph ΠΈ Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ.

Π§ΡƒΠ΄ΠΈΡ‚Π΅ Π»ΠΈ сС ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ?

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° Ceph Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ към Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€

И Ρ‚Π°ΠΊΠ°, ΠΈΠΌΠ°Ρ‚Π΅ Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π½Π° Π΅Π΄Π½Π° Ρ€ΡŠΠΊΠ° разстояниС, Ρ€Π°Π·Π³ΡŠΡ€Π½Π°Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, kubespray. Наблизо Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Ceph - ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° Π³ΠΎ инсталиратС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с Ρ‚ΠΎΠ²Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΊΠ½ΠΈΠ³ΠΈ-ΠΈΠ³Ρ€ΠΈ. Надявам сС няма Π½ΡƒΠΆΠ΄Π° Π΄Π° спомСнавам, Ρ‡Π΅ Π·Π° производство ΠΌΠ΅ΠΆΠ΄Ρƒ тях трябва Π΄Π° ΠΈΠΌΠ° ΠΌΡ€Π΅ΠΆΠ° с чСстотна Π»Π΅Π½Ρ‚Π° ΠΏΠΎΠ½Π΅ 10 Gbit/s.

Ако ΠΈΠΌΠ°Ρ‚Π΅ всичко Ρ‚ΠΎΠ²Π°, Π΄Π° Π²ΡŠΡ€Π²ΠΈΠΌ!

ΠŸΡŠΡ€Π²ΠΎ, Π½Π΅ΠΊΠ° ΠΎΡ‚ΠΈΠ΄Π΅ΠΌ Π΄ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈΡ‚Π΅ възли Π½Π° Ceph ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π΄Π°Π»ΠΈ всичко Π΅ Π½Π°Ρ€Π΅Π΄:

ceph health
ceph -s

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π²Π΅Π΄Π½Π°Π³Π° Ρ‰Π΅ създадСм ΠΏΡƒΠ» Π·Π° RBD дисковС:

ceph osd pool create kube 32
ceph osd pool application enable kube rbd

НСка Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ към ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes. Π’Π°ΠΌ ΠΏΡŠΡ€Π²ΠΎ Ρ‰Π΅ инсталирамС Ceph CSI Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π·Π° RBD. Π©Π΅ инсталирамС, ΠΊΠ°ΠΊΡ‚ΠΎ сС ΠΎΡ‡Π°ΠΊΠ²Π°, ΠΏΡ€Π΅Π· Helm.
ДобавямС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ с Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π·Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° ceph-csi-rbd:

helm repo add ceph-csi https://ceph.github.io/csi-charts
helm inspect values ceph-csi/ceph-csi-rbd > cephrbd.yml

Π‘Π΅Π³Π° трябва Π΄Π° ΠΏΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»Π° cephrbd.yml. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ID Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ IP адрСситС Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚Π΅ Π² Ceph:

ceph fsid  # Ρ‚Π°ΠΊ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ clusterID
ceph mon dump  # Π° Ρ‚Π°ΠΊ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ IP-адрСса ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΎΠ²

Π’ΡŠΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ стойности във Ρ„Π°ΠΉΠ»Π° cephrbd.yml. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°ΠΌΠ΅ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° PSP ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ (Pod Security Policies). ΠžΠΏΡ†ΠΈΠΈ Π² Ρ€Π°Π·Π΄Π΅Π»ΠΈ nodeplugin ΠΈ доставчик Π²Π΅Ρ‡Π΅ във Ρ„Π°ΠΉΠ»Π°, Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ:

csiConfig:
  - clusterID: "bcd0d202-fba8-4352-b25d-75c89258d5ab"
    monitors:
      - "v2:172.18.8.5:3300/0,v1:172.18.8.5:6789/0"
      - "v2:172.18.8.6:3300/0,v1:172.18.8.6:6789/0"
      - "v2:172.18.8.7:3300/0,v1:172.18.8.7:6789/0"

nodeplugin:
  podSecurityPolicy:
    enabled: true

provisioner:
  podSecurityPolicy:
    enabled: true

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½ΠΈ остава, Π΅ Π΄Π° инсталирамС Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes.

helm upgrade -i ceph-csi-rbd ceph-csi/ceph-csi-rbd -f cephrbd.yml -n ceph-csi-rbd --create-namespace

Π‘Ρ‚Ρ€Π°Ρ…ΠΎΡ‚Π½ΠΎ, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΡŠΡ‚ Π½Π° RBD Ρ€Π°Π±ΠΎΡ‚ΠΈ!
НСка създадСм Π½ΠΎΠ² StorageClass Π² Kubernetes. Π’ΠΎΠ²Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ изисква ΠΌΠ°Π»ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π° с Ceph.

БъздавамС Π½ΠΎΠ² ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π² Ceph ΠΈ ΠΌΡƒ Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΡ€Π°Π²Π° Π΄Π° пишС Π² ΠΏΡƒΠ»Π° ΠΊΡƒΠ±Π΅:

ceph auth get-or-create client.rbdkube mon 'profile rbd' osd 'profile rbd pool=kube'

Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Π΅ ΠΊΠ»ΡŽΡ‡ΡŠΡ‚ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ всС ΠΎΡ‰Π΅ Π΅ Ρ‚Π°ΠΌ:

ceph auth get-key client.rbdkube

ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Ρ‰Π΅ ΠΈΠ·Π²Π΅Π΄Π΅ Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ:

AQCO9NJbhYipKRAAMqZsnqqS/T8OYQX20xIa9A==

НСка Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚Π°Π·ΠΈ стойност към Secret Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π° Kubernetes - ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ нСя userKey:

---
apiVersion: v1
kind: Secret
metadata:
  name: csi-rbd-secret
  namespace: ceph-csi-rbd
stringData:
  # ЗначСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π²
  # кластСрС Ceph. ID ΡŽΠ·Π΅Ρ€Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ ΠΏΡƒΠ»Ρƒ,
  # ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π² storage class
  userID: rbdkube
  userKey: <user-key>

И Π½ΠΈΠ΅ създавамС Π½Π°ΡˆΠ°Ρ‚Π° Ρ‚Π°ΠΉΠ½Π°:

kubectl apply -f secret.yaml

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ манифСст Π½Π° StorageClass Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ:

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: csi-rbd-sc
provisioner: rbd.csi.ceph.com
parameters:
   clusterID: <cluster-id>
   pool: kube

   imageFeatures: layering

   # Π­Ρ‚ΠΈ сСкрСты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ
   # Π² ваш ΠΏΡƒΠ».
   csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret
   csi.storage.k8s.io/provisioner-secret-namespace: ceph-csi-rbd
   csi.storage.k8s.io/controller-expand-secret-name: csi-rbd-secret
   csi.storage.k8s.io/controller-expand-secret-namespace: ceph-csi-rbd
   csi.storage.k8s.io/node-stage-secret-name: csi-rbd-secret
   csi.storage.k8s.io/node-stage-secret-namespace: ceph-csi-rbd

   csi.storage.k8s.io/fstype: ext4

reclaimPolicy: Delete
allowVolumeExpansion: true
mountOptions:
  - discard

Врябва Π΄Π° сС попълни clusterID, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ Π½Π°ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ ΠΎΡ‚ Π΅ΠΊΠΈΠΏΠ° ceph fsidΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ·ΠΈ манифСст към ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes:

kubectl apply -f storageclass.yaml

Π—Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΊΠ°ΠΊ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ‚Π΅ работят Π·Π°Π΅Π΄Π½ΠΎ, Π½Π΅ΠΊΠ° създадСм слСдния PVC (Persistent Volume Claim):

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rbd-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: csi-rbd-sc

НСка Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Kubernetes създадС искания Ρ‚ΠΎΠΌ Π² Ceph:

kubectl get pvc
kubectl get pv

Всичко ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° страхотно! Как ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚ΠΎΠ²Π° ΠΎΡ‚ страна Π½Π° Ceph?
ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ списък с Ρ‚ΠΎΠΌΠΎΠ²Π΅ Π² ΠΏΡƒΠ»Π° ΠΈ ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ информация Π·Π° нашия ΠΎΠ±Π΅ΠΌ:

rbd ls -p kube
rbd -p kube info csi-vol-eb3d257d-8c6c-11ea-bff5-6235e7640653  # Ρ‚ΡƒΡ‚, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ID Ρ‚ΠΎΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π΄Π°Π»Π° прСдыдущая ΠΊΠΎΠΌΠ°Π½Π΄Π°

Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ прСоразмСряванСто Π½Π° RBD Ρ‚ΠΎΠΌ.
ΠŸΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Ρ‚ΠΎΠΌΠ° Π² pvc.yaml манифСста Π½Π° 2Gi ΠΈ Π³ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Ρ‚Π΅:

kubectl apply -f pvc.yaml

НСка ΠΈΠ·Ρ‡Π°ΠΊΠ°ΠΌΠ΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΄Π° влязат Π² сила ΠΈ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΠΎΡ‚Π½ΠΎΠ²ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Ρ‚ΠΎΠΌΠ°.

rbd -p kube info csi-vol-eb3d257d-8c6c-11ea-bff5-6235e7640653

kubectl get pv
kubectl get pvc

Π’ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° PVC Π½Π΅ сС Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ». Π—Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π·Π°Ρ‰ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° поискатС ΠΎΡ‚ Kubernetes YAML описаниС Π½Π° PVC:

kubectl get pvc rbd-pvc -o yaml

Π•Ρ‚ΠΎ Π³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°:

ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅: Π˜Π·Ρ‡Π°ΠΊΠ²Π°Π½Π΅ потрСбитСлят Π΄Π° (Ρ€Π΅)стартира ΠΏΠΎΠ΄, Π·Π° Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ прСоразмСряванСто Π½Π° Ρ‚ΠΎΠΌΠ° Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма Π½Π° възСла. Ρ‚ΠΈΠΏ: FileSystemResizePending

ВоСст Π΄ΠΈΡΠΊΡŠΡ‚ Π΅ нараснал, Π½ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма Π½Π° Π½Π΅Π³ΠΎ Π½Π΅.
Π—Π° Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма, трябва Π΄Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Ρ‚ΠΎΠΌΠ°. Π£ нас ΡΡŠΠ·Π΄Π°Π΄Π΅Π½ΠΎΡ‚ΠΎ PVC/PV Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎ никакъв Π½Π°Ρ‡ΠΈΠ½.

МоТСм Π΄Π° създадСм тСстов ΠΏΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½:

---
apiVersion: v1
kind: Pod
metadata:
  name: csi-rbd-demo-pod
spec:
  containers:
    - name: web-server
      image: nginx:1.17.6
      volumeMounts:
        - name: mypvc
          mountPath: /data
  volumes:
    - name: mypvc
      persistentVolumeClaim:
        claimName: rbd-pvc
        readOnly: false

А сСга Π½Π΅ΠΊΠ° Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ PVC:

kubectl get pvc

Π Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½, всичко Π΅ Π½Π°Ρ€Π΅Π΄.

Π’ ΠΏΡŠΡ€Π²Π°Ρ‚Π° част Ρ€Π°Π±ΠΎΡ‚ΠΈΡ…ΠΌΠ΅ с Π±Π»ΠΎΠΊΠΎΠ²ΠΎΡ‚ΠΎ устройство RBD (ΡΡŠΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Rados Block Device), Π½ΠΎ Ρ‚ΠΎΠ²Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° станС, Π°ΠΊΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ микроуслуги трябва Π΄Π° работят с Ρ‚ΠΎΠ·ΠΈ диск Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. CephFS Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-подходящ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ с дискови изобраТСния.
Използвайки ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° Ceph ΠΈ Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ, Ρ‰Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ CSI ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с CephFS.

НСка Π²Π·Π΅ΠΌΠ΅ΠΌ стойноститС ΠΎΡ‚ Π½ΠΎΠ²Π°Ρ‚Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° Π½Π° Helm, ΠΎΡ‚ която сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ:

helm inspect values ceph-csi/ceph-csi-cephfs > cephfs.yml

ΠžΡ‚Π½ΠΎΠ²ΠΎ трябва Π΄Π° ΠΏΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»Π° cephfs.yml. ΠšΠ°ΠΊΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈ, Ceph ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ Ρ‰Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚:

ceph fsid
ceph mon dump

ΠŸΠΎΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° със стойности ΠΊΠ°Ρ‚ΠΎ Ρ‚Π΅Π·ΠΈ:

csiConfig:
  - clusterID: "bcd0d202-fba8-4352-b25d-75c89258d5ab"
    monitors:
      - "172.18.8.5:6789"
      - "172.18.8.6:6789"
      - "172.18.8.7:6789"

nodeplugin:
  httpMetrics:
    enabled: true
    containerPort: 8091
  podSecurityPolicy:
    enabled: true

provisioner:
  replicaCount: 1
  podSecurityPolicy:
    enabled: true

Моля, ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ адрСситС Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π° са посочСни Π² простата Ρ„ΠΎΡ€ΠΌΠ° адрСс:ΠΏΠΎΡ€Ρ‚. Π—Π° Π΄Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ cephfs Π½Π° възСл, Ρ‚Π΅Π·ΠΈ адрСси сС ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΡ‚ към ΠΌΠΎΠ΄ΡƒΠ»Π° Π½Π° ядрото, ΠΊΠΎΠΉΡ‚ΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ Π·Π½Π°Π΅ ΠΊΠ°ΠΊ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с мониторния ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» v2.
ΠŸΡ€ΠΎΠΌΠ΅Π½ΡΠΌΠ΅ ΠΏΠΎΡ€Ρ‚Π° Π·Π° httpMetrics (Prometheus Ρ‰Π΅ ΠΎΡ‚ΠΈΠ΄Π΅ Ρ‚Π°ΠΌ Π·Π° наблюдСниС Π½Π° ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅), Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° Π½Π΅ Π΅ Π² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ с nginx-proxy, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ инсталиран ΠΎΡ‚ Kubespray. МоТС Π΄Π° Π½Π΅ сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅ ΠΎΡ‚ Ρ‚ΠΎΠ²Π°.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΉΡ‚Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° Helm Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes:

helm upgrade -i ceph-csi-cephfs ceph-csi/ceph-csi-cephfs -f cephfs.yml -n ceph-csi-cephfs --create-namespace

НСка ΠΎΡ‚ΠΈΠ΄Π΅ΠΌ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π·Π° Π΄Π°Π½Π½ΠΈ Ceph, Π·Π° Π΄Π° създадСм ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Ρ‚Π°ΠΌ. Π’ докумСнтацията сС посочва, Ρ‡Π΅ Π΄ΠΎΡΡ‚Π°Π²Ρ‡ΠΈΠΊΡŠΡ‚ Π½Π° CephFS изисква ΠΏΡ€Π°Π²Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π½Π° администратор Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Но Π½ΠΈΠ΅ Ρ‰Π΅ създадСм ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» fs с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ ΠΏΡ€Π°Π²Π°:

ceph auth get-or-create client.fs mon 'allow r' mgr 'allow rw' mds 'allow rws' osd 'allow rw pool=cephfs_data, allow rw pool=cephfs_metadata'

И Π½Π΅ΠΊΠ° Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ нСговия ΠΊΠ»ΡŽΡ‡ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ, Ρ‰Π΅ Π½ΠΈ трябва ΠΏΠΎ-късно:

ceph auth get-key client.fs

НСка създадСм ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Secret ΠΈ StorageClass.
Нищо Π½ΠΎΠ²ΠΎ, Π²Π΅Ρ‡Π΅ видяхмС Ρ‚ΠΎΠ²Π° Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° RBD:

---
apiVersion: v1
kind: Secret
metadata:
  name: csi-cephfs-secret
  namespace: ceph-csi-cephfs
stringData:
  # НСобходимо для динамичСски создаваСмых Ρ‚ΠΎΠΌΠΎΠ²
  adminID: fs
  adminKey: <Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹>

ΠŸΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° манифСста:

kubectl apply -f secret.yaml

И сСга - ΠΎΡ‚Π΄Π΅Π»Π΅Π½ StorageClass:

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: csi-cephfs-sc
provisioner: cephfs.csi.ceph.com
parameters:
  clusterID: <cluster-id>

  # Имя Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы CephFS, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ создан Ρ‚ΠΎΠΌ
  fsName: cephfs

  # (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ) ΠŸΡƒΠ» Ceph, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠΌΠ°
  # pool: cephfs_data

  # (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ) Π Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ запятыми ΠΎΠΏΡ†ΠΈΠΈ монтирования для Ceph-fuse
  # Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
  # fuseMountOptions: debug

  # (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ) Π Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ запятыми ΠΎΠΏΡ†ΠΈΠΈ монтирования CephFS для ядра
  # Π‘ΠΌ. man mount.ceph Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ список этих ΠΎΠΏΡ†ΠΈΠΉ. НапримСр:
  # kernelMountOptions: readdir_max_bytes=1048576,norbytes

  # Π‘Π΅ΠΊΡ€Π΅Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ доступы для Π°Π΄ΠΌΠΈΠ½Π° ΠΈ/ΠΈΠ»ΠΈ ΡŽΠ·Π΅Ρ€Π° Ceph.
  csi.storage.k8s.io/provisioner-secret-name: csi-cephfs-secret
  csi.storage.k8s.io/provisioner-secret-namespace: ceph-csi-cephfs
  csi.storage.k8s.io/controller-expand-secret-name: csi-cephfs-secret
  csi.storage.k8s.io/controller-expand-secret-namespace: ceph-csi-cephfs
  csi.storage.k8s.io/node-stage-secret-name: csi-cephfs-secret
  csi.storage.k8s.io/node-stage-secret-namespace: ceph-csi-cephfs

  # (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ) Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ceph-fuse (fuse), 
  # Π»ΠΈΠ±ΠΎ ceph kernelclient (kernel).
  # Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠΌΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ,
  # это опрСдСляСтся поиском ceph-fuse ΠΈ mount.ceph
  # mounter: kernel
reclaimPolicy: Delete
allowVolumeExpansion: true
mountOptions:
  - debug

НСка Π³ΠΎ попълним Ρ‚ΡƒΠΊ clusterID ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ Π² Kubernetes:

kubectl apply -f storageclass.yaml

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°

Π—Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊΡ‚ΠΎ Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ΠΊΠ° създадСм PVC:

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: csi-cephfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
  storageClassName: csi-cephfs-sc

И ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° PVC/PV:

kubectl get pvc
kubectl get pv

Ако искатС Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π² CephFS, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Ρ‚Π°Π·ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π° систСма някъдС. НапримСр, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ.

НСка ΠΎΡ‚ΠΈΠ΄Π΅ΠΌ Π΄ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈΡ‚Π΅ възли Π½Π° Ceph ΠΈ изпълним слСднитС дСйствия:

# Π’ΠΎΡ‡ΠΊΠ° монтирования
mkdir -p /mnt/cephfs

# Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Ρ„Π°ΠΉΠ» с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ администратора
ceph auth get-key client.admin >/etc/ceph/secret.key

# ДобавляСм запись Π² /etc/fstab
# !! ИзмСняСм ip адрСс Π½Π° адрСс нашСго ΡƒΠ·Π»Π°
echo "172.18.8.6:6789:/ /mnt/cephfs ceph name=admin,secretfile=/etc/ceph/secret.key,noatime,_netdev    0       2" >> /etc/fstab

mount /mnt/cephfs

Π Π°Π·Π±ΠΈΡ€Π° сС, ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° FS Π½Π° Ceph възСл ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ·ΠΈ Π΅ подходящо само Π·Π° Ρ†Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠΌ Π½Π° нашия Slurm курсовС. НС мисля, Ρ‡Π΅ някой Π±ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈΠ» Ρ‚ΠΎΠ²Π° Π² производството; ΠΈΠΌΠ° голям риск ΠΎΡ‚ случайно ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π²Π°ΠΆΠ½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

И накрая, Π½Π΅ΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΊΠ°ΠΊ работят Π½Π΅Ρ‰Π°Ρ‚Π° с прСоразмСряванСто Π½Π° Ρ‚ΠΎΠΌΠΎΠ²Π΅ Π² случая Π½Π° CephFS. НСка сС Π²ΡŠΡ€Π½Π΅ΠΌ към Kubernetes ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°ΠΌΠ΅ нашия манифСст Π·Π° PVC - ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ‚Π°ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎ 7Gi.

НСка ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ рСдактирания Ρ„Π°ΠΉΠ»:

kubectl apply -f pvc.yaml

НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π°Ρ‚Π° дирСктория, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ сС Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»Π° ΠΊΠ²ΠΎΡ‚Π°Ρ‚Π°:

getfattr -n ceph.quota.max_bytes <ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³-с-Π΄Π°Π½Π½Ρ‹ΠΌΠΈ>

Π—Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° инсталиратС ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° систСма Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.

ΠžΡ‡ΠΈΡ‚Π΅ сС страхуват, Π½ΠΎ Ρ€ΡŠΡ†Π΅Ρ‚Π΅ ΠΏΠ»Π°ΡˆΠ°Ρ‚

Всички Ρ‚Π΅Π·ΠΈ заклинания ΠΈ дълги YAML манифСсти ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ слоТни Π½Π° ΠΏΡ€ΡŠΠ² ΠΏΠΎΠ³Π»Π΅Π΄, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΡƒΡ‡Π΅Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Slurm Π³ΠΈ овладяват доста Π±ΡŠΡ€Π·ΠΎ.
Π’ Ρ‚Π°Π·ΠΈ статия Π½Π΅ навлязохмС дълбоко Π² Π΄ΠΆΡƒΠ½Π³Π»Π°Ρ‚Π° - ΠΈΠΌΠ° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π° докумСнтация Π·Π° Ρ‚ΠΎΠ²Π°. Ако сС интСрСсуватС ΠΎΡ‚ подробности Π·Π° настройката Π½Π° Ceph Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ с Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, Ρ‚Π΅Π·ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚:

ΠžΠ±Ρ‰ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Kubernetes с ΠΎΠ±Π΅ΠΌΠΈ
RBD докумСнтация
Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° RBD ΠΈ Kubernetes ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Ceph
Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° RBD ΠΈ Kubernetes ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° CSI
ΠžΠ±Ρ‰Π° докумСнтация Π½Π° CephFS
Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° CephFS ΠΈ Kubernetes ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° CSI

На курса Slurm Π‘Π°Π·Π° Kubernetes ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π΄Π°Π»Π΅Ρ‡ ΠΈ Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ истинско ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Kubernetes, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° CephFS ΠΊΠ°Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Π§Ρ€Π΅Π· заявки GET/POST Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ към ΠΈ Π΄Π° Π³ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ ΠΎΡ‚ Ceph.

И Π°ΠΊΠΎ сС интСрСсуватС ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° сС рСгистрирайтС Π·Π° Π½ΠΎΠ² курс ΠΏΠΎ Ceph. Π”ΠΎΠΊΠ°Ρ‚ΠΎ Ρ‚Π΅Ρ‡Π΅ Π±Π΅Ρ‚Π° Ρ‚Π΅ΡΡ‚ΡŠΡ‚, ΠΊΡƒΡ€ΡΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ с ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° повлияСтС Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΡƒ.

Автор Π½Π° статията: ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Π¨Π²Π°Π»ΠΎΠ², ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠ²Π°Ρ‰ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Southbridge, сСртифициран Kubernetes администратор, Π°Π²Ρ‚ΠΎΡ€ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° курсовС ΠΏΠΎ Slurm.

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