Ceph-рдЖрдзрд╛рд░рд┐рдд рднрдгреНрдбрд╛рд░рдгрд▓рд╛рдИ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдиреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг

рдХрдиреНрдЯреЗрдирд░ рднрдгреНрдбрд╛рд░рдг рдЗрдиреНрдЯрд░рдлреЗрд╕ (CSI) Kubernetes рд░ рднрдгреНрдбрд╛рд░рдг рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рдмреАрдЪрдХреЛ рдПрдХ рдПрдХреАрдХреГрдд рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╣реЛред рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЫреЛрдЯрдХрд░реАрдорд╛ рдХреБрд░рд╛ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВ рднрдиреНрдпреЛ, рд░ рдЖрдЬ рд╣рд╛рдореА CSI рд░ Ceph рдХреЛ рд╕рдВрдпреЛрдЬрдирдорд╛ рдирдЬрд┐рдХрдмрд╛рдЯ рд╣реЗрд░реНрдиреЗрдЫреМрдВ: рд╣рд╛рдореА рдХрд╕рд░реА рджреЗрдЦрд╛рдЙрдиреЗрдЫреМрдВ Ceph рднрдгреНрдбрд╛рд░рдг рдЬрдбрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ред
рд▓реЗрдЦрд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдпрджреНрдпрдкрд┐ рдзрд╛рд░рдгрд╛рдХреЛ рд╕рд╣рдЬрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдереЛрд░реИ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВред рд╣рд╛рдореА Ceph рд░ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрджреИрдиреМрдВред

рдХреЗ рддрдкрд╛рдЗрдБ рд╕реЛрдЪреНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рдпреЛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ?

Ceph-рдЖрдзрд╛рд░рд┐рдд рднрдгреНрдбрд╛рд░рдгрд▓рд╛рдИ 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 рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЬрд╛рдФрдВред рддреНрдпрд╣рд╛рдБ, рд╕рдмреИ рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рд╣рд╛рдореА RBD рдХреЛ рд▓рд╛рдЧрд┐ Ceph CSI рдбреНрд░рд╛рдЗрднрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВред рд╣рд╛рдореА рд╣реЗрд▓реНрдо рдорд╛рд░реНрдлрдд рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдкрдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВред
рд╣рд╛рдореА рдЪрд╛рд░реНрдЯрдХреЛ рд╕рд╛рде рднрдгреНрдбрд╛рд░ рдердкреНрдЫреМрдВ, рд╣рд╛рдореАрд▓реЗ 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 рдлрд╛рдЗрд▓ рднрд░реНрдиреБ рдкрд░реНрдЫред рдпреЛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐, Ceph рдорд╛ рдореЛрдирд┐рдЯрд░рд╣рд░реВрдХреЛ рдХреНрд▓рд╕реНрдЯрд░ ID рд░ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН:

ceph fsid  # ╤В╨░╨║ ╨╝╤Л ╤Г╨╖╨╜╨░╨╡╨╝ clusterID
ceph mon dump  # ╨░ ╤В╨░╨║ ╤Г╨▓╨╕╨┤╨╕╨╝ IP-╨░╨┤╤А╨╡╤Б╨░ ╨╝╨╛╨╜╨╕╤В╨╛╤А╨╛╨▓

рд╣рд╛рдореАрд▓реЗ рдкреНрд░рд╛рдкреНрдд рдорд╛рдирд╣рд░реВ cephrbd.yml рдлрд╛рдЗрд▓рдорд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдЫреМрдВред рдПрдХреИ рд╕рдордпрдорд╛, рд╣рд╛рдореА PSP рдиреАрддрд┐рд╣рд░реВ (рдкреЛрдб рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐рд╣рд░реВ) рдХреЛ рдирд┐рд░реНрдорд╛рдг рд╕рдХреНрд╖рдо рдЧрд░реНрджрдЫреМрдВред рдЦрдгреНрдбрд╣рд░реВрдорд╛ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ 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

рдЕрд░реНрдХреЛ, рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдмрд╛рдБрдХреА рд░рд╣реЗрдХреЛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЪрд╛рд░реНрдЯ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБ рд╣реЛред

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

рд░рд╛рдореНрд░реЛ, RBD рдЪрд╛рд▓рдХ рдХрд╛рдо рдЧрд░реНрджрдЫ!
Kubernetes рдорд╛ рдирдпрд╛рдБ StorageClass рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВред рдпрд╕рд▓рд╛рдИ рдлреЗрд░рд┐ рд╕реЗрдлрд╕рдБрдЧ рдЕрд▓рд┐рдХрддрд┐ рдЯрд┐рдВрдХрд░рд┐рдВрдЧ рдЪрд╛рд╣рд┐рдиреНрдЫред

рд╣рд╛рдореА Ceph рдорд╛ рдирдпрд╛рдБ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫреМрдВ рд░ рдЙрд╕рд▓рд╛рдИ рдкреВрд▓рдорд╛ рд▓реЗрдЦреНрдиреЗ рдЕрдзрд┐рдХрд╛рд░ рджрд┐рдиреНрдЫреМрдВ рдШрди:

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

рдЕрдм рдкрд╣реБрдБрдЪ рдХреБрдЮреНрдЬреА рдЕрдЭреИ рддреНрдпрд╣рд╛рдБ рдЫ рд╣реЗрд░реМрдВ:

ceph auth get-key client.rbdkube

рдЖрджреЗрд╢рд▓реЗ рдпреЛ рдЬрд╕реНрддреИ рдХреЗрд╣рд┐ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрдиреЗрдЫ:

AQCO9NJbhYipKRAAMqZsnqqS/T8OYQX20xIa9A==

рдпреЛ рдорд╛рди Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ Secret рдорд╛ рдердкреМрдВ - рдЬрд╣рд╛рдБ рд╣рд╛рдореАрд▓рд╛рдИ рдпреЛ рдЪрд╛рд╣рд┐рдиреНрдЫ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдХреБрдЮреНрдЬреА:

---
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 manifest рдХреЗрд╣рд┐ рдЪрд╛рд╣рд┐рдиреНрдЫ:

---
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 рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдпреЛ manifest рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

kubectl apply -f storageclass.yaml

рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрд▓реЗ рд╕рдБрдЧреИ рдХрд╛рдо рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрди, рдирд┐рдореНрди PVC (рдирд┐рд░рдиреНрддрд░ рднреЛрд▓реНрдпреБрдо рджрд╛рдмреА) рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ:

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

рддреБрд░реБрдиреНрддреИ рд╣реЗрд░реМрдВ рдХрд┐ рдХрд╕рд░реА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд▓реЗ 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 manifest рдорд╛ рднреЛрд▓реНрдпреБрдо рд╕рд╛рдЗрдЬ 2Gi рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдпрд╕рд▓рд╛рдИ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

kubectl apply -f pvc.yaml

рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдкреНрд░рднрд╛рд╡ рдкрд╛рд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреБрд╣реЛрд╕реН рд░ рднреЛрд▓реНрдпреБрдо рдЖрдХрд╛рд░ рдлреЗрд░рд┐ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред

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

kubectl get pv
kubectl get pvc

рд╣рд╛рдореА рджреЗрдЦреНрдЫреМрдВ рдХрд┐ PVC рдХреЛ рдЖрдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХреЛ рдЫреИрдиред рдХрд┐рди рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди, рддрдкрд╛рдЗрдБ PVC рдХреЛ YAML рд╡рд┐рд╡рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рд▓рд╛рдИ рд╕реЛрдзреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

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 рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдХреЛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╣рд╛рдореА CephFS рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди CSI рд░ рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХ рдирд┐рдХрд╛рдпрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗрдЫреМрдВред

рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдирдпрд╛рдБ рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯрдмрд╛рдЯ рдорд╛рдирд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реМрдВ:

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 рдХреЛ рд▓рд╛рдЧрд┐ рдкреЛрд░реНрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫреМрдВ (рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдореЗрдЯреНрд░рд┐рдХреНрд╕рдХреЛ рдирд┐рдЧрд░рд╛рдиреАрдХреЛ рд▓рд╛рдЧрд┐ рддреНрдпрд╣рд╛рдБ рдЬрд╛рдиреЗрдЫрдиреН) рддрд╛рдХрд┐ рдпреЛ nginx-proxy рд╕рдБрдЧ рджреНрд╡рдиреНрджреНрд╡ рдирд╣реЛрд╕реН, рдЬреБрди Kubespray рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рдПрдХреЛ рд╣реЛред рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реБрди рд╕рдХреНрдЫред

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

рдЕрд▓рдЧ рд╕реЗрдХреНрд░реЗрдЯ рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХреНрд▓рд╛рд╕ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВред
рдХреЗрд╣рд┐ рдирдпрд╛рдБ рдЫреИрди, рд╣рд╛рдореАрд▓реЗ рдпреЛ рдкрд╣рд┐рд▓реЗ рдиреИ 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

рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдпрд╕ рдЬрд╕реНрддреИ Ceph рдиреЛрдбрдорд╛ FS рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрдиреБ рдХреЗрд╡рд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдЫ, рдЬреБрди рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдорд╛ рдЧрд░реНрдЫреМрдВред рд╕реНрд▓рд░реНрдо рдкрд╛рдареНрдпрдХреНрд░рдорд╣рд░реВред рдорд▓рд╛рдИ рд▓рд╛рдЧреНрджреИрди рдХрд┐ рдХрд╕реИрд▓реЗ рдпреЛ рдЙрддреНрдкрд╛рджрдирдорд╛ рдЧрд░реНрдиреЗрдЫ; рддреНрдпрд╣рд╛рдБ рдЧрд▓реНрддрд┐рд▓реЗ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдлрд╛рдЗрд▓рд╣рд░реВ рдореЗрдЯрд╛рдЙрдиреЗ рдЙрдЪреНрдЪ рдЬреЛрдЦрд┐рдо рдЫред

рд░ рдЕрдиреНрддрдорд╛, CephFS рдХреЛ рдорд╛рдорд▓рд╛ рдорд╛ рд░рд┐рд╕рд╛рдЗрдЬ рднреЛрд▓реНрдпреБрдо рд╕рдВрдЧ рдЪреАрдЬрд╣рд░реБ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рдЬрд╛рдБрдЪ рдЧрд░реМрдВред Kubernetes рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реН рд░ PVC рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ manifest рд╕рдореНрдкрд╛рджрди рдЧрд░реНрдиреБрд╣реЛрд╕реН - рддреНрдпрд╣рд╛рдБ рдЖрдХрд╛рд░ рдмрдврд╛рдЙрдиреБрд╣реЛрд╕реН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, 7Gi рдорд╛ред

рд╕рдореНрдкрд╛рджрд┐рдд рдлрд╛рдЗрд▓ рд▓рд╛рдЧреВ рдЧрд░реМрдВ:

kubectl apply -f pvc.yaml

рдХреЛрдЯрд╛ рдХрд╕рд░реА рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХреЛ рдЫ рд╣реЗрд░реНрди рдорд╛рдЙрдиреНрдЯ рдЧрд░рд┐рдПрдХреЛ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд╣реЗрд░реМрдВ:

getfattr -n ceph.quota.max_bytes <╨║╨░╤В╨░╨╗╨╛╨│-╤Б-╨┤╨░╨╜╨╜╤Л╨╝╨╕>

рдпреЛ рдЖрджреЗрд╢ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдкреНрдпрд╛рдХреЗрдЬ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫ attr.

рдЖрдБрдЦрд╛ рдбрд░рд╛рдЙрдБрдЫрдиреН, рддрд░ рд╣рд╛рддрд╣рд░реВ

рдпреА рд╕рдмреИ рдордиреНрддреНрд░рд╣рд░реВ рд░ рд▓рд╛рдореЛ YAML рдкреНрд░рдХрдЯрд╣рд░реВ рд╕рддрд╣рдорд╛ рдЬрдЯрд┐рд▓ рджреЗрдЦрд┐рдиреНрдЫрдиреН, рддрд░ рд╡реНрдпрд╡рд╣рд╛рд░рдорд╛, Slurm рд╡рд┐рджреНрдпрд╛рд░реНрдереАрд╣рд░реВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЪрд╛рдБрдбреИ рд╣реНрдпрд╛рдЩреНрдЧ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫрдиреНред
рдпрд╕ рд▓реЗрдЦрдорд╛ рд╣рд╛рдореА рдЬрдВрдЧрд▓рдорд╛ рдЧрд╣рд┐рд░реЛ рдЧрдПрдХрд╛ рдЫреИрдиреМрдВ - рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдЫрдиреНред рдпрджрд┐ рддрдкрд╛рдЗрдБ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╕рд╛рде Ceph рднрдгреНрдбрд╛рд░рдг рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рд╡рд┐рд╡рд░рдгрд╣рд░реВрдорд╛ рд░реБрдЪрд┐ рд░рд╛рдЦреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдпреА рд▓рд┐рдЩреНрдХрд╣рд░реВрд▓реЗ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ:

рдорд╛рддреНрд░рд╛ рд╕рдВрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ Kubernetes рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдиреНрддрд╣рд░реВ
RBD рджрд╕реНрддрд╛рд╡реЗрдЬ
Ceph рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдпрдмрд╛рдЯ RBD рд░ Kubernetes рдПрдХреАрдХреГрдд рдЧрд░реНрджреИ
CSI рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдпрдмрд╛рдЯ RBD рд░ Kubernetes рдПрдХреАрдХреГрдд рдЧрд░реНрджреИ
рд╕рд╛рдорд╛рдиреНрдп CephFS рджрд╕реНрддрд╛рд╡реЗрдЬ
CSI рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдпрдмрд╛рдЯ CephFS рд░ Kubernetes рдПрдХреАрдХреГрдд рдЧрд░реНрджреИ

рд╕реНрд▓рд░реНрдо рдХреЛрд░реНрд╕рдорд╛ Kubernetes рдЖрдзрд╛рд░ рддрдкрд╛рдИрдВ рдЕрд▓рд┐ рдЕрдЧрд╛рдбреА рдЬрд╛рди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ Kubernetes рдорд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреИрдирд╛рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЬреБрди рдлрд╛рдЗрд▓ рднрдгреНрдбрд╛рд░рдгрдХреЛ рд░реВрдкрдорд╛ CephFS рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред GET/POST рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдорд╛рд░реНрдлрдд рддрдкрд╛рдЗрдБ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрди рд░ Ceph рдмрд╛рдЯ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрд╣реБрдиреЗрдЫред

рд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдгрдорд╛ рдмрдвреА рд░реБрдЪрд┐ рд░рд╛рдЦреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рд╕рд╛рдЗрди рдЕрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН Ceph рдорд╛ рдирдпрд╛рдБ рдкрд╛рдареНрдпрдХреНрд░рдоред рдмрд┐рдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдмреЗрд▓рд╛, рдкрд╛рдареНрдпрдХреНрд░рдо рдЫреБрдЯрдорд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд░ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдХреЛ рд╕рд╛рдордЧреНрд░реАрд▓рд╛рдИ рдкреНрд░рднрд╛рд╡ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рд▓реЗрдЦрдХреЛ рд▓реЗрдЦрдХ: рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рд╢реНрд╡рд╛рд▓реЛрдн, рдЕрднреНрдпрд╛рд╕ рдЗрдиреНрдЬрд┐рдирд┐рдпрд░ рд╕рд╛рдЙрдердмреНрд░рд┐рдЬ, рдкреНрд░рдорд╛рдгрд┐рдд Kubernetes рдкреНрд░рд╢рд╛рд╕рдХ, рд▓реЗрдЦрдХ рд░ Slurm рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ред

рд╕реНрд░реЛрдд: www.habr.com