แแแแขแแแแแ แแก แจแแแแฎแแแก แแแขแแ แคแแแกแ (CSI) แแ แแก แแ แแแแแ แแแขแแ แคแแแกแ Kubernetes-แกแ แแ แจแแแแฎแแแก แกแแกแขแแแแแก แจแแ แแก. แแแแแแ แฃแแแ แแแกแแฃแแ แแ
แกแขแแขแแแจแ แแแชแแแฃแแแ แ แแแแฃแ แ, แแฃแแชแ แแแแแ แแแแแ แขแแแแแฃแแ แแแแแแแแแแ แแฆแฅแแแก แแแกแแแแแแแแแแแ. แฉแแแ แแ แแแแแแฎแแแแแ Ceph แแ Kubernetes แแแแกแขแแ แแแแก แแแงแแแแแแก แแ แแแแคแแแฃแ แแชแแแก.
แแแแแขแแ แแกแแแ แ แแแแ แแฃแจแแแแก?
แแกแ แ แแ, แแฅแแแ แแแฅแแ Kubernetes แแแแกแขแแ แ แแฅแแแแก แฎแแแแ, แแแแแแแแแฃแแ, แแแแแแแแแ,
แแฃ แแก แงแแแแแคแแ แ แแแฅแแก, แฌแแแแแแ!
แแแ แแแ แ แแแจแ, แแแแแ แแแแแแแแแ Ceph-แแก แแแแกแขแแ แฃแ แแแแแซแจแ แแ แจแแแแแแฌแแแ, แ แแ แงแแแแแคแแ แ แฌแแกแ แแแจแแ:
ceph health
ceph -s
แจแแแแแแ, แฉแแแ แแแฃแงแแแแแแแแ แจแแแฅแแแแ แแฃแแก RBD แแแกแแแแแกแแแแก:
ceph osd pool create kube 32
ceph osd pool application enable kube rbd
แแแแแแแแแ แแฃแแแ แแแขแแก แแแแกแขแแ แแ. แแฅ, แแแ แแแ แ แแแจแ, แฉแแแ แแแแแงแแแแแ 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). แแแ แแแแขแ แแแ แกแแฅแชแแแแจแ แแแแแซแแก แแแแแแแขแ ะธ แแแแฌแแแแแแแ แฃแแแ แคแแแแจแ, แแแแ แแแแแกแฌแแ แแแ แจแแกแแซแแแแแแแ, แ แแแแ แช แแแฉแแแแแแแ แฅแแแแแ:
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 auth get-or-create client.rbdkube mon 'profile rbd' osd 'profile rbd pool=kube'
แแฎแแ แแแแฎแแ, แฌแแแแแแก แแแกแแฆแแแ แฏแแ แแแแแ แแ แกแแแแแก:
ceph auth get-key client.rbdkube
แแ แซแแแแแ แแแแแแ แแกแแแแกแ แ แแ:
AQCO9NJbhYipKRAAMqZsnqqS/T8OYQX20xIa9A==
แแแแแ แแแแแแแขแแ แแก แแแแจแแแแแแแ Secret-แก Kubernetes แแแแกแขแแ แจแ - แกแแแแช แแแญแแ แแแแ แแแแฎแแแ แแแแแก แแแ แแแ:
---
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
แกแแญแแ แแ แจแแแกแแแ แแแแกแขแแ แแก ID, แ แแช แแฃแแแแ แฃแแแ แแแกแฌแแแแแ แชแแค แคแกแแแแแ แแแแแแงแแแแ แแก แแแแแคแแกแขแ 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
แ แแแแ แช แฉแแแก, แงแแแแแคแแ แ แแจแแแแแแ แแ! แ แแก แฐแแแแก แแก แชแแคแแก แแฎแแ แแก?
แฉแแแ แแแฆแแแ แแฃแแจแ แแ แกแแแฃแแ แขแแแแแแก แฉแแแแแแแแแแก แแ แแฃแงแฃแ แแแ แแแคแแ แแแชแแแก แฉแแแแ แแแชแฃแแแแแก แจแแกแแฎแแ:
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-แก PVC-แแก YAML แแฆแฌแแ แแแแแแกแแแแก:
kubectl get pvc rbd-pvc -o yaml
แแ แแ แแแแแแ:
แจแแขแงแแแแแแแ: แแแแแแแ แแแแฎแแแ แแแแแก (แฎแแแแฎแแ) แแแฌแงแแแแก pod, แ แแแ แแแแกแ แฃแแแก แคแแแแฃแ แ แกแแกแขแแแแก แแแชแฃแแแแแก แแแแแก แจแแชแแแ แแแแแซแแ. แขแแแ: 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 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
แแแฎแแแ แแแแแแแแแกแฌแแแแ, แ แแ แแแแแขแแ แแก แแแกแแแแ แแแแ แแแแแแแแฃแแแ แแแ แขแแแ แคแแ แแแ แแแกแแแแ แแ:แแแ แขแ. แแแแแซแแ cephf-แแแแก แแแกแแงแแแแแแแ, แแก แแแกแแแแ แแแแ แแแแแแแก แแแ แแแแก แแแแฃแแจแ, แ แแแแแแแช แฏแแ แแ แแชแแก แ แแแแ แแแฃแจแแแก v2 แแแแแขแแ แแก แแ แแขแแแแแแแ.
แฉแแแ แแชแแแแ แแแ แขแก httpMetrics-แแกแแแแก (แแ แแแแแ แฌแแแ แแฅ แแแขแ แแแแก แแแแแขแแ แแแแแกแแแแก) แแกแ, แ แแ แแแ แแ แแฌแแแแแฆแแแแแแแแแแก 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
แจแแแแแกแแ แแฅ แแแแกแขแแ แแก ID แแ แแแแแแงแแแแแ 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-แแก แแแแแแขแแแแแ แแฎแแแแ แกแแแแ แฏแแจแ แแแแแแแแกแแแแกแแ แจแแกแแคแแ แแกแ, แ แแกแแช แฉแแแ แแแแแแแแ
แแ แแแแแก, แแแแแ แจแแแแแแฌแแแ แ แแแแ แแฃแจแแแแก แขแแแแแแก แแแแแก แจแแชแแแ CephFS-แแก แจแแแแฎแแแแแจแ. แแแแแ แแแแฃแแ แฃแแแแ Kubernetes-แก แแ แแแแ แแแแฅแขแแ แแ แฉแแแแ แแแแแคแแกแขแ PVC-แกแแแแก - แแแแแ แแแ แแแแ แแฅ, แแแแแแแแแ, 7Gi-แแแ.
แแแแแ แแแแแแแงแแแแ แ แแแแฅแขแแ แแแฃแแ แคแแแแ:
kubectl apply -f pvc.yaml
แแแแแ แจแแแฎแแแแ แแแแแแขแแแแแฃแ แแแ แแฅแขแแ แแแก, แ แแ แแแฎแแ แ แแแแ แจแแแชแแแแ แแแแขแ:
getfattr -n ceph.quota.max_bytes <ะบะฐัะฐะปะพะณ-ั-ะดะฐะฝะฝัะผะธ>
แแแแกแแแแแก, แ แแ แแ แแ แซแแแแแแ แแแฃแจแแแก, แจแแแซแแแแ แแแแญแแ แแแ แแแแแขแแก แแแงแแแแแ แแฅแแแแก แกแแกแขแแแแจแ attr.
แแแแแแแก แแจแแแแแ, แแแแ แแ แฎแแแแแก แแจแแแแแ
แงแแแแ แแก แจแแแแชแแ แแ แแ แซแแแ YAML แแแแแคแแกแขแแชแแแแ แแแ แแแแฃแแแ แ แแฃแแ แฉแแแก, แแแแ แแ แแ แแฅแขแแแแจแ, Slurm แกแขแฃแแแแขแแแ แแแ แกแแแแแแ แกแฌแ แแคแแ แแ แแแแแแ แแแแก.
แแ แกแขแแขแแแจแ แฉแแแ แแ แจแแแแแแ แฏแฃแแแแแแจแ แฆแ แแแ - แแแแก แแคแแชแแแแฃแ แ แแแแฃแแแแขแแชแแ แแ แกแแแแแก. แแฃ แแแแแขแแ แแกแแแ แแฃแแแ แแแขแแก แแแแกแขแแ แแแ Ceph แจแแแแฎแแแก แแแงแแแแแแก แแแขแแแแแ, แแก แแแฃแแแแ แแแแแฎแแแ แแแแ:
Slurm แแฃแ แกแแ
แแ แแฃ แฃแคแ แ แแแขแแ แแแแแขแแ แแกแแแ แแแแแชแแแแ แจแแแแฎแแ, แแแจแแ แแแ แแแแกแขแ แแ แแแ
แกแขแแขแแแก แแแขแแ แ: แแแแฅแกแแแแ แ แจแแแแแแ, แแ แแฅแขแแแแกแ แแแแแแแ แ
แฌแงแแ แ: www.habr.com