Ceph-เช†เชงเชพเชฐเชฟเชค เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ‡ Kubernetes เช•เซเชฒเชธเซเชŸเชฐ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชตเชพเชจเซเช‚ เชตเซเชฏเชตเชนเชพเชฐเซ เช‰เชฆเชพเชนเชฐเชฃ

เช•เชจเซเชŸเซ‡เชจเชฐ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ (CSI) เช เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช…เชจเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเชฟเชธเซเชŸเชฎเซเชธ เชตเชšเซเชšเซ‡เชจเซเช‚ เชเช•เซ€เช•เซƒเชค เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เช›เซ‡. เช…เชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชคเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชŸเซ‚เช‚เช•เชฎเชพเช‚ เชตเชพเชค เช•เชฐเซ€ เช›เซ‡ เช•เชนเซเชฏเซเช‚, เช…เชจเซ‡ เช†เชœเซ‡ เช†เชชเชฃเซ‡ CSI เช…เชจเซ‡ Ceph เชจเชพ เชธเช‚เชฏเซ‹เชœเชจเชจเซ‡ เชจเชœเซ€เช•เชฅเซ€ เชœเซ‹เชˆเชถเซเช‚: เช…เชฎเซ‡ เชฌเชคเชพเชตเซ€เชถเซเช‚ เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ Ceph เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ‹ เช•เซเชฌเชฐเชจเซ‡เชŸเซ€เชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚.
เช…เชจเซเชญเซ‚เชคเชฟเชจเซ€ เชธเชฐเชณเชคเชพ เชฎเชพเชŸเซ‡ เชฒเซ‡เช– เชตเชพเชธเซเชคเชตเชฟเช•, เชœเซ‹เช•เซ‡ เชฅเซ‹เชกเชพ เชธเชฐเชณ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชชเซ‚เชฐเชพ เชชเชพเชกเซ‡ เช›เซ‡. เช…เชฎเซ‡ Ceph เช…เชจเซ‡ Kubernetes เช•เซเชฒเชธเซเชŸเชฐเซ‹เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซเช‚ เชตเชฟเชšเชพเชฐเชคเชพ เชจเชฅเซ€.

เชถเซเช‚ เชคเชฎเซ‡ เช†เชถเซเชšเชฐเซเชฏ เชชเชพเชฎเซ€ เชฐเชนเซเชฏเชพ เช›เซ‹ เช•เซ‡ เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡?

Ceph-เช†เชงเชพเชฐเชฟเชค เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ‡ Kubernetes เช•เซเชฒเชธเซเชŸเชฐ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชตเชพเชจเซเช‚ เชตเซเชฏเชตเชนเชพเชฐเซ เช‰เชฆเชพเชนเชฐเชฃ

เชคเซ‡เชฅเซ€, เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชคเชฎเชพเชฐเซ€ เช†เช‚เช—เชณเซ€เชจเชพ เชตเซ‡เชขเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐ เช›เซ‡, เชœเซ‡ เชคเซˆเชจเชพเชค เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช•เซเชฌเซ‡เชธเซเชชเซเชฐเซ‡. เชจเชœเซ€เช•เชฎเชพเช‚ เชเช• Ceph เช•เซเชฒเชธเซเชŸเชฐ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ - เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เชชเชฃ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช† เชธเชพเชฅเซ‡ เชชเซเชฒเซ‡เชฌเซเช•เชจเซ‹ เชธเชฎเซ‚เชน. เชนเซเช‚ เช†เชถเชพ เชฐเชพเช–เซเช‚ เช›เซเช‚ เช•เซ‡ เชคเซ‡เชฎเชจเซ€ เชตเชšเซเชšเซ‡ เช‰เชคเซเชชเชพเชฆเชจ เชฎเชพเชŸเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ 10 Gbit/s เชจเซ€ เชฌเซ‡เชจเซเชกเชตเชฟเชกเซเชฅ เชธเชพเชฅเซ‡เชจเซเช‚ เชจเซ‡เชŸเชตเชฐเซเช• เชนเซ‹เชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡ เชคเซ‡ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.

เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช† เชฌเชงเซเช‚ เช›เซ‡, เชคเซ‹ เชšเชพเชฒเซ‹!

เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ Ceph เช•เซเชฒเชธเซเชŸเชฐ เชจเซ‹เชกเซเชธเชฎเชพเช‚เชฅเซ€ เชเช• เชชเชฐ เชœเชˆเช เช…เชจเซ‡ เชคเชชเชพเชธเซ€เช เช•เซ‡ เชฌเชงเซเช‚ เช•เซเชฐเชฎเชฎเชพเช‚ เช›เซ‡:

ceph health
ceph -s

เช†เช—เชณ, เช…เชฎเซ‡ เชคเชฐเชค เชœ RBD เชกเชฟเชธเซเช• เชฎเชพเชŸเซ‡ เชชเซ‚เชฒ เชฌเชจเชพเชตเซ€เชถเซเช‚:

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

เชšเชพเชฒเซ‹ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐ เชคเชฐเชซ เช†เช—เชณ เชตเชงเซ€เช. เชคเซเชฏเชพเช‚, เชธเซŒ เชชเซเชฐเชฅเชฎ, เช…เชฎเซ‡ 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 เชจเซ€เชคเชฟเช“ (เชชเซ‹เชก เชธเซเชฐเช•เซเชทเชพ เชจเซ€เชคเชฟเช“) เชจเซ€ เชฐเชšเชจเชพเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ€เช เช›เซ€เช. เชตเชฟเชญเชพเช—เซ‹เชฎเชพเช‚ เชตเชฟเช•เชฒเซเชชเซ‹ เชจเซ‹เชกเชชเซเชฒเช—เชฟเชจ ะธ เชœเซ‹เช—เชตเชพเชˆ เช•เชฐเชจเชพเชฐ เชซเชพเช‡เชฒเชฎเชพเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช›เซ‡, เชคเซ‡เช“ เชจเซ€เชšเซ‡ เชฌเชคเชพเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ‡ เชธเซเชงเชพเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

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 เชฎเชพเช‚ เชเช• เชจเชตเซ‹ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฌเชจเชพเชตเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชชเซ‚เชฒเชฎเชพเช‚ เชฒเช–เชตเชพเชจเชพ เช…เชงเชฟเช•เชพเชฐเซ‹ เช†เชชเซ€เช เช›เซ€เช เชธเชฎเช˜เชจ:

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

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชœเซ‹เชˆเช เช•เซ‡ เชเช•เซเชธเซ‡เชธ เช•เซ€ เชนเชœเซ€ เชชเชฃ เชคเซเชฏเชพเช‚ เช›เซ‡:

ceph auth get-key client.rbdkube

เช†เชฆเซ‡เชถ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เช•เช‚เชˆเช• เช†เช‰เชŸเชชเซเชŸ เช•เชฐเชถเซ‡:

AQCO9NJbhYipKRAAMqZsnqqS/T8OYQX20xIa9A==

เชšเชพเชฒเซ‹ เช† เชฎเซ‚เชฒเซเชฏเชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชธเชฟเช•เซเชฐเซ‡เชŸเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ€เช - เชœเซเชฏเชพเช‚ เช†เชชเชฃเชจเซ‡ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช•เซ€:

---
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

เช†เช—เชณ, เช…เชฎเชจเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เช•เช‚เชˆเช• เชธเซเชŸเซ‹เชฐเซ‡เชœเช•เซเชฒเชพเชธ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

---
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

เชญเชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซเชฒเชธเซเชŸเชฐเช†เชˆเชกเซ€, เชœเซ‡ เช…เชฎเซ‡ เชŸเซ€เชฎ เชฆเซเชตเชพเชฐเชพ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชถเซ€เช–เซเชฏเชพ เช›เซ€เช ceph fsid, เช…เชจเซ‡ เช† เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸเชจเซ‡ Kubernetes เช•เซเชฒเชธเซเชŸเชฐ เชชเชฐ เชฒเชพเช—เซ เช•เชฐเซ‹:

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

เชšเชพเชฒเซ‹ เชคเชฐเชค เชœ เชœเซ‹เชˆเช เช•เซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซ‡เชธเซ‡ เชธเซ‡เชซเชฎเชพเช‚ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‡เชฒ เชตเซ‹เชฒเซเชฏเซเชฎ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเซเชฏเซเช‚:

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 เชจเชพ 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

เช…เชจเซ‡ เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชชเซ€เชตเซ€เชธเซ€ เชœเซ‹เชˆเช:

kubectl get pvc

เช•เชฆ เชฌเชฆเชฒเชพเชˆ เช—เชฏเซเช‚ เช›เซ‡, เชฌเชงเซเช‚ เชธเชพเชฐเซเช‚ เช›เซ‡.

เชชเซเชฐเชฅเชฎ เชญเชพเช—เชฎเชพเช‚, เช…เชฎเซ‡ RBD เชฌเซเชฒเซ‹เช• เช‰เชชเช•เชฐเชฃ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซเชฏเซเช‚ เชนเชคเซเช‚ (เชคเซ‡ Rados เชฌเซเชฒเซ‹เช• เช‰เชชเช•เชฐเชฃ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชฏ เช›เซ‡), เชชเชฐเช‚เชคเซ เชœเซ‹ เชตเชฟเชตเชฟเชง เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธเชจเซ‡ เช† เชกเชฟเชธเซเช• เชธเชพเชฅเซ‡ เชเช•เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซ‹ เช† เช•เชฐเซ€ เชถเช•เชพเชคเซเช‚ เชจเชฅเซ€. เชกเชฟเชธเซเช• เชˆเชฎเซ‡เชœเซ€เชธเชจเซ‡ เชฌเชฆเชฒเซ‡ เชซเชพเชˆเชฒเซ‹ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ 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 เชฎเซ‹เชจเชฟเชŸเชฐ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เชคเซ‡ เชœเชพเชฃเชคเซเช‚ เชจเชฅเซ€.
เช…เชฎเซ‡ httpเชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฎเชพเชŸเซ‡ เชชเซ‹เชฐเซเชŸ เชฌเชฆเชฒเซ€เช เช›เซ€เช (เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธเชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซเชฏเชพเช‚ เชœเชถเซ‡) เชœเซ‡เชฅเซ€ เชคเซ‡ nginx-proxy เชธเชพเชฅเซ‡ เชตเชฟเชฐเซ‹เชงเชพเชญเชพเชธ เชจ เช•เชฐเซ‡, เชœเซ‡ Kubespray เชฆเซเชตเชพเชฐเชพ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡. เชคเชฎเชจเซ‡ เช•เชฆเชพเชš เช†เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชนเซ‡เชฒเซเชฎ เชšเชพเชฐเซเชŸ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹:

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

เชšเชพเชฒเซ‹ เช…เชฒเช— เชธเชฟเช•เซเชฐเซ‡เชŸ เช…เชจเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช•เซเชฒเชพเชธ เชฌเชจเชพเชตเซ€เช.
เช•เช‚เชˆ เชจเชตเซเช‚ เชจเชฅเซ€, เช…เชฎเซ‡ เช†เชฐเชฌเซ€เชกเซ€เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚ เช† เชœเซ‹เชˆ เชšเซ‚เช•เซเชฏเชพ เช›เซ€เช:

---
apiVersion: v1
kind: Secret
metadata:
  name: csi-cephfs-secret
  namespace: ceph-csi-cephfs
stringData:
  # ะะตะพะฑั…ะพะดะธะผะพ ะดะปั ะดะธะฝะฐะผะธั‡ะตัะบะธ ัะพะทะดะฐะฒะฐะตะผั‹ั… ั‚ะพะผะพะฒ
  adminID: fs
  adminKey: <ะฒั‹ะฒะพะด ะฟั€ะตะดั‹ะดัƒั‰ะตะน ะบะพะผะฐะฝะดั‹>

เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸ เชฒเชพเช—เซ เช•เชฐเชตเซเช‚:

kubectl apply -f secret.yaml

เช…เชจเซ‡ เชนเชตเซ‡ - เชเช• เช…เชฒเช— เชธเซเชŸเซ‹เชฐเซ‡เชœ เช•เซเชฒเชพเชธ:

---
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

เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เช…เชนเซ€เช‚ เชญเชฐเซ€เช เช•เซเชฒเชธเซเชŸเชฐเช†เชˆเชกเซ€ เช…เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชฒเชพเช—เซ:

kubectl apply -f storageclass.yaml

เชจเชฟเชฐเซ€เช•เซเชทเชฃ

เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡, เช…เช—เชพเช‰เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ€ เชœเซ‡เชฎ, เชšเชพเชฒเซ‹ เชชเซ€เชตเซ€เชธเซ€ เชฌเชจเชพเชตเซ€เช:

---
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 เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเชพ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซ€เช - เชคเซเชฏเชพเช‚ เช•เชฆ เชตเชงเชพเชฐเชตเซเช‚, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, 7Gi.

เชšเชพเชฒเซ‹ เชธเช‚เชชเชพเชฆเชฟเชค เชซเชพเช‡เชฒ เชฒเชพเช—เซ เช•เชฐเซ€เช:

kubectl apply -f pvc.yaml

เช•เซเชตเซ‹เชŸเชพ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชฆเชฒเชพเชฏเซ‹ เช›เซ‡ เชคเซ‡ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เชšเชพเชฒเซ‹ เชฎเชพเช‰เชจเซเชŸ เชฅเชฏเซ‡เชฒ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชœเซ‹เชˆเช:

getfattr -n ceph.quota.max_bytes <ะบะฐั‚ะฐะปะพะณ-ั-ะดะฐะฝะฝั‹ะผะธ>

เช† เช†เชฆเซ‡เชถ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชคเชฎเชพเชฐเซ€ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชชเซ‡เช•เซ‡เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ€ เชถเช•เซ‡ เช›เซ‡ attr.

เช†เช‚เช–เซ‹ เชญเชฏเชญเซ€เชค เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเชพเชฅ เช•เชฐเซ‡ เช›เซ‡

เช† เชคเชฎเชพเชฎ เชธเซเชชเซ‡เชฒเซเชธ เช…เชจเซ‡ เชฒเชพเช‚เชฌเชพ YAML เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸ เชธเชชเชพเชŸเซ€ เชชเชฐ เชœเชŸเชฟเชฒ เชฒเชพเช—เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚, เชธเซเชฒเชฐเซเชฎเชจเชพ เชตเชฟเชฆเซเชฏเชพเชฐเซเชฅเซ€เช“ เช–เซ‚เชฌ เชœ เชเชกเชชเชฅเซ€ เชคเซ‡เชจเซ‡ เชชเช•เชกเซ€ เชฒเซ‡ เช›เซ‡.
เช† เชฒเซ‡เช–เชฎเชพเช‚ เช†เชชเชฃเซ‡ เชœเช‚เช—เชฒเชฎเชพเช‚ เชŠเช‚เชกเซ‡ เชธเซเชงเซ€ เชจเชฅเซ€ เช—เชฏเชพ - เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เช›เซ‡. เชœเซ‹ เชคเชฎเชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐ เชธเชพเชฅเซ‡ Ceph เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชตเชฟเช—เชคเซ‹เชฎเชพเช‚ เชฐเชธ เชนเซ‹เชฏ, เชคเซ‹ เช† เชฒเชฟเช‚เช•เซเชธ เชฎเชฆเชฆ เช•เชฐเชถเซ‡:

เชตเซ‹เชฒเซเชฏเซเชฎ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเชพ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชธเชพเชฎเชพเชจเซเชฏ เชธเชฟเชฆเซเชงเชพเช‚เชคเซ‹
เช†เชฐเชฌเซ€เชกเซ€ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ
Ceph เชฆเซเชฐเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€ RBD เช…เชจเซ‡ Kubernetes เชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเชตเซเช‚
CSI เชฆเซเชฐเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€ RBD เช…เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเชตเซเช‚
เชธเชพเชฎเชพเชจเซเชฏ CephFS เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ
CSI เชฆเซเชฐเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€ CephFS เช…เชจเซ‡ Kubernetes เชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเชตเซเช‚

เชธเซเชฒเชฐเซเชฎ เช•เซ‹เชฐเซเชธ เชชเชฐ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชฌเซ‡เช เชคเชฎเซ‡ เชฅเซ‹เชกเซ‡ เช†เช—เชณ เชœเชˆเชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชเช• เชตเชพเชธเซเชคเชตเชฟเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชœเชฎเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‡ CephFS เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชซเชพเช‡เชฒ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชคเชฐเซ€เช•เซ‡ เช•เชฐเชถเซ‡. GET/POST เชตเชฟเชจเช‚เชคเซ€เช“ เชฆเซเชตเชพเชฐเชพ เชคเชฎเซ‡ เชซเชพเช‡เชฒเซ‹เชจเซ‡ Ceph เชชเชฐ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเซ€ เชถเช•เชถเซ‹ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€ เชถเช•เชถเซ‹.

เช…เชจเซ‡ เชœเซ‹ เชคเชฎเชจเซ‡ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚ เชตเชงเซ เชฐเชธ เชนเซ‹เชฏ, เชคเซ‹ เชธเชพเช‡เชจ เช…เชช เช•เชฐเซ‹ Ceph เชชเชฐ เชจเชตเซ‹ เช…เชญเซเชฏเชพเชธเช•เซเชฐเชฎ. เชœเซเชฏเชพเชฐเซ‡ เชฌเซ€เชŸเชพ เชŸเซ‡เชธเซเชŸ เชšเชพเชฒเซ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เช•เซ‹เชฐเซเชธ เชกเชฟเชธเซเช•เชพเช‰เชจเซเชŸ เชชเชฐ เชฎเซ‡เชณเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ‡ เชชเซเชฐเชญเชพเชตเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชฒเซ‡เช–เชจเชพ เชฒเซ‡เช–เช•: เชเชฒเซ‡เช•เซเชเชพเชจเซเชกเชฐ เชถเซเชตเชพเชฒเซ‹เชต, เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐ เชธเชพเช‰เชฅเชฌเซเชฐเซ€เชœ, เชชเซเชฐเชฎเชพเชฃเชฟเชค เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐ, เชธเซเชฒเชฐเซเชฎ เช…เชญเซเชฏเชพเชธเช•เซเชฐเชฎเซ‹เชจเชพ เชฒเซ‡เช–เช• เช…เชจเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ.

เชธเซ‹เชฐเซเชธ: www.habr.com