Container Storage Interface (CSI) ααΊααΆα
ααα»α
αααααΆααααααα½αααααα½ααααΆα Kubernetes αα·ααααααααααααα»ααα·ααααααα ααΎαααΆααα·ααΆααααΆαααααΈα’αααΈααΆαα½α
α αΎα
α’αααααααααααααααΌαα§ααΆα αααααΆααααααα αααααΈααΆααΆααααααααα·α
αααααΆααααΆαααΆααααα½αααααΆααααααΎααααααα ααΎααα·ααα·α
αΆαααΆααΆαααα‘αΎα αα·αααααααα
ααΆαααααααα Ceph αα·α Kubernetes clusters ααα
ααΎα’ααααααααααΆααΎααΆααααΎαααΆααααΆαααΌα ααααα ?
ααΌα
αααα α’αααααΆαα
ααααα Kubernetes αα
α
α»αααααΆαααααααα’ααα ααΆαααΆαααααααΆα α§ααΆα ααα
ααΎααΆαααΆααα’ααααα ααααα !
ααΆααααΌα ααΌαα αΌααα ααΆααααααΆαα Ceph cluster αα½α α αΎααα·αα·αααααΎαααΆα’αααΈαααΊαααα·ααα αααα»αααααΆααα
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 α ααΎααααΈααααΎααΌα αααα ααΌααααααααααααααααΆααα ααααα αα·αα’αΆααααααΆα IP αααααααΌααΈααααα αααα»α Cephα
ceph fsid # ΡΠ°ΠΊ ΠΌΡ ΡΠ·Π½Π°Π΅ΠΌ clusterID
ceph mon dump # Π° ΡΠ°ΠΊ ΡΠ²ΠΈΠ΄ΠΈΠΌ IP-Π°Π΄ΡΠ΅ΡΠ° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΎΠ²
ααΎααααα αΌαααααααααααα½αααΆααα αααα»αα―αααΆα cephrbd.yml α αααα»ααααααΆαα½αααααΆααα ααΎαααΎαααααΎαααΆααααααΎααααααΆααα PSP (Pod Security Policy)α αααααΎααα αααα»αααααα 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α αΎαα’αα»αααα manifest ααααα αααα»α 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
αααααΎαααααΆααααΈααααααα 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 ααααΎαααΆαα
ααααΆααααααΌαααα αααα‘αααα
αααα»α manifest 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 αααααααΌαααΆααααααΎαα‘αΎαααΆααααα
αα
α»ααααααααααα·αααααΌαααΆαααααΎααΆααα·ααΈααΆαα½αα‘αΎαα
ααΎαα’αΆα αααααΎα Pod ααΆαααααα§ααΆα αααααΌα αααα
---
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) ααα»ααααααΆαα·αα’αΆα
ααααΎααΆαααααααα·αααΎααααΆααΈααααΌααααααααααΌαααααΎααΆαααΆαα½αααΆαααααααα»ααααααααΆαααααΆα CephFS ααΊααα’ααΆααααααΆααααααΎααΆαααΆαα½αα―αααΆαααΆααΆαααΌαααΆαααΆαα
αααααααΎα§ααΆα ααααα Ceph αα·α Kubernetes clusters ααΎαααΉαααααααα
ααΆαααααααα 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 cluster αα½α α αΎαα’αα»αααααααααααΆαααΆααααααα
# Π’ΠΎΡΠΊΠ° ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
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 ααααααααΊαααααααααααΆαααααααααααααααα»ααααααΆαααα»ααααα αααααΆα’αααΈαααααΎαααααΎαα
ααΎααααααΎα
α αΎαα α»αααααα ααΌααα·αα·αααααΎαααΈαααααααα’αααΈαααααΎαααΆαααΆαα½αααΆαααααΆααααααΌαααα ααααα»αααααΈ CephFS α ααααααα‘αααα Kubernetes α αΎαααααααα½α manifest ααααααΎααααααΆαα PVC - αααααΎαααα ααα ααΈααα α§ααΆα ααααα 7Gi α
αααα’αα»ααααα―αααΆααααααΆαααααααα½αα
kubectl apply -f pvc.yaml
ααΌααααα‘ααααΎααααααααΆααααα ααΎααααΈααΎαααΆααΎααΌααΆααΆαααααΆααααααΌααααΆαααΌα ααααα α
getfattr -n ceph.quota.max_bytes <ΠΊΠ°ΡΠ°Π»ΠΎΠ³-Ρ-Π΄Π°Π½Π½ΡΠΌΠΈ>
ααΎααααΈα±ααααΆααααααααΆαααααααΎαααΆα α’ααααααα ααααΆααααΌαααα‘αΎααααα αααα ααΎααααααααααααα’αααα attr.
αααααααααΆα ααα»ααααααααααΎ
α’αααααΆαα·αα»αααααΆααα’ααααα αα·αααΆααααα αΆα YAML αααααα αΆααααΌα
ααΆαααα»αααααΆαααΎαααα ααα»αααααα
αααα»αααΆαα’αα»ααααααΆααααααα αα·ααα Slurm ααα½αααΆαααΆααααα½ααααααα½ααααααΆαααΆαααα ααα
αα
αααα»αα’ααααααααααΎααα·αααΆαα
αΌααααα
αα
αααα»ααααααα - ααΆαα―αααΆαααααΌαααΆααααααΆααααΏααααα ααααα·αααΎα’αααα
αΆααα’αΆααααααααΎααααααΆααααα’α·αααααΆαααα‘αΎαα§ααααααααα»α Ceph ααΆαα½αααΉαα
ααααα Kubernetes αααααααΆααααΆαααααααΉααα½αα
αα
ααΎαααααα·ααααΆ Slurm
α αΎαααααα·αααΎα’αααα
αΆααα’αΆααααααααΎααΆααααα»ααα·ααααααααααααααα ααΌαα
α»αααααααααααΆαα
α’ααααα·ααααα’αααααα Alexander Shvalov αα·αααααα’αα»αααα
ααααα: www.habr.com