Container Storage Interface (CSI) ááẠKubernetes ááŸáá·áº ááá¯ááŸá±á¬ááºááŸá¯á
áá
áºáá»á¬ážááŒá¬áž áá±á«ááºážá
ááºážáá¬ážáá±á¬ á¡ááºáá¬áá±á·á
áºáá
áºáá¯ááŒá
áºáááºá á¡á²áá«ááᯠá¡ááá¯áá»á¯á¶ážááŒá±á¬ááŒá®ážááŒá®á
áá±á¬ááºážáá«ážááẠáá¶áá°áá»ááºááœááºáá°á
á±ááẠá¡áááºážáááºááá¯ážááŸááºážáá±á¬ á¥ááá¬áá»á¬ážááŸááá±á¬áºáááºáž á¡á
á
áºá¡ááŸááºááᯠáá±ážáá«áááºá Ceph ááŸáá·áº Kubernetes á¡á
á¯á¡áá±ážáá»á¬ážááᯠáááºáááºááŒááºážááŸáá·áº ááŒááºáááºááŒááºážááá¯á·ááᯠáá»áœááºá¯ááºááá¯á· áá
ááºážá
á¬ážáá«á
áááºááá¯á¡áá¯ááºáá¯ááºáá²ááá¯á· ááœá±ážáá±áá«ááá¬ážá
ááá¯á·ááŒá±á¬áá·áºá á¥ááá¬á¡á¬ážááŒáá·áºá ááá·áºáááºáá»á±á¬ááºážááááºááœáẠKubernetes á¡á
á¯á¡áá±ážáá
áºáá¯ááŸááááºá
áá«ááœá±á¡á¬ážáá¯á¶ážááŸáááẠááœá¬ážááŒáá¡á±á¬ááºá
áŠážá áœá¬á Ceph á¡á á¯á¡áá±ážáá»á¬ážáá²á០áá áºáá¯ááá¯á· ááœá¬ážáᬠá¡áá¬á¡á¬ážáá¯á¶áž á áá áºááá»ááŸááááŸá á á áºáá±ážááŒáá·áºááŒáá«á áá¯á·á
ceph health
ceph -s
ááá¯á·áá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠRBD áá áºááºáá»á¬ážá¡ááœáẠáá±áá°ážáááºáá áºáá¯ááᯠáá»ááºáá»ááºážáááºáá®ážáá«áááºá
ceph osd pool create kube 32
ceph osd pool application enable kube rbd
Kubernetes á¡á
á¯á¡áá±ážááá¯á· áááºááœá¬ážááŒáá«á
áá¯á·á á¡á²áá®ááŸá¬ ááááá¯á¶ážá¡áá±áá²á· RBD á¡ááœáẠCeph CSI driver ááᯠinstall áá¯ááºáá«áááºá 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 ááá¯ááºááá¯ááŒáá·áºáááºááá¯á¡ááºáááºá áááºážááá¯áá¯ááºáá±á¬ááºááẠCeph ááŸá áá±á¬áºáá®áá¬áá»á¬ážá á¡á á¯ááá¯áẠID ááŸáá·áº IP ááááºá á¬áá»á¬ážááᯠááŸá¬ááœá±áá«-
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 áá¬ááºáá±á¬ááºážá á¡áá¯ááºáá¯ááºáááºá
Kubernetes ááœáẠStorageClass á¡áá
áºáá
áºáᯠáááºáá®ážááŒáá«á
áá¯á·á áááºážááẠCeph ááŸáá·áº áááºáááºááŸá¯ á¡áááºážááẠááá¯á¡ááºááŒááºáááºá
áá»áœááºá¯ááºááá¯á·ááẠCeph ááœáẠá¡áá¯á¶ážááŒá¯áá°á¡áá áºááᯠáááºáá®ážááŒá®áž áá±áá°ážáááºááá¯á· á á¬áá±ážááá¯ááºááœáá·áºáá±ážáááºá áá¯á¶áž:
ceph auth get-or-create client.rbdkube mon 'profile rbd' osd 'profile rbd pool=kube'
á¡áᯠAccess key ááŸááá±áá±ážáá¬ááᯠááŒáá·áºáá¡á±á¬ááºá
ceph auth get-key client.rbdkube
command ááẠá€áá²á·ááá¯á·áá±á¬ á¡áá¬áá»á¬ážááᯠáá¯ááºáá±ážáááá·áºáááº-
AQCO9NJbhYipKRAAMqZsnqqS/T8OYQX20xIa9A==
áá»áœááºá¯ááºááá¯á·ááá¯á¡ááºááá·áºáá±áá¬ááœáẠ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
ááŒáá·áºá áœááºááẠááá¯á¡ááºáá«áááºá 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 ááœáẠáá±á¬ááºážááá¯áá¬ážáá±á¬ volume ááᯠáááºááá¯á·áááºáá®ážáá²á·áááºááᯠáá»ááºáá»ááºážááŒáá·áºááŒáá«á áá¯á·á
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 á á¡ááœááºá¡á á¬ážááŸá¬ ááŒá±á¬ááºážáá²ááŒááºážáááŸáááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á·ááŒááºááá«áááºá á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº PVC á YAML áá±á¬áºááŒáá»ááºá¡ááœáẠKubernetes ááᯠáááºáá±ážááŒááºážááá¯ááºáááº-
kubectl get pvc rbd-pvc -o yaml
á€áááºááŸá¬ ááŒá¿áá¬ááŒá áºáááº-
áááºáá±á·áá»áº- node áá±á«áºááŸá ááá¯ááºá áá áºá á¡áá¶á¡ááœááºá¡á á¬ážááᯠá¡ááŒá®ážáááºáááºá¡ááœáẠáá±á«á·ááºáá áºáá¯á¡á¬áž ááŒááºáááºá áááºááẠá¡áá¯á¶ážááŒá¯áá°á¡á¬áž á á±á¬áá·áºáá±áááºá á¡áá»áá¯ážá¡á á¬áž- FileSystemResizePending
ááá¯ááá¯áááºááŸá¬á disk áááºááŒá®ážááœá¬ážáá¬áá±á¬áºáááºážáááºážáá±á«áºááŸáááá¯ááºá
áá
áºáááŸááá«á
ááá¯ááºá
áá
áºááŒá®ážááœá¬ážáááºá á¡áá¶á¡ááá¯ážá¡áá»ááºááᯠáááºáááºááẠááá¯á¡ááºáááºá áá»áœááºá¯ááºááá¯á·ááá¯ááºáá¶ááœáẠáááºáá®ážáá¬ážáá±á¬ 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 ááᯠááá¯ááá¯áááº)á ááá¯á·áá±á¬áº ááá°áá®áá±á¬ microservices áá»á¬ážááẠဠdisk ááŸáá·áº áá
áºááŒáá¯ááºáááºá¡áá¯ááºáá¯ááºááẠááá¯á¡ááºáá«á áááºážááᯠáá¯ááºáá±á¬ááºááááá«á 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
áá±á¬áºáá®áá¬ááááºá
á¬áá»á¬ážááᯠááá¯ážááŸááºážáá±á¬áá¯á¶á
á¶ááááºá
á¬-ááá¯á·ááºááœáẠáááºááŸááºáá¬ážááŒá±á¬ááºáž áá»á±ážáá°ážááŒá¯á áááááŒá¯áá«á node áá
áºáá¯áá±á«áºááœáẠcephfs áááºáááºáááºá á€ááááºá
á¬áá»á¬ážááᯠv2 áá±á¬áºáá®áá¬áááá¯ááá¯áá±á¬ááŸáá·áº áááºááá¯á·áá¯ááºáá±á¬ááºááááºááᯠááááá±ážááá·áº kernel module ááá¯á· ááœáŸá²ááŒá±á¬ááºážáá±ážáá«áááºá
áá»áœááºá¯ááºááá¯á·ááẠhttpMetrics á¡ááœáẠááá¯á·ááºááᯠááŒá±á¬ááºážááá¯ááºááẠ(Prometheus ááẠá€áá±áá¬ááœáẠá
á±á¬áá·áºááŒáá·áºááá¯ááºážáá¬ááŸá¯áá»á¬áž ááŒá¯áá¯ááºáááº) Kubespray á០ááá·áºááœááºážáá¬ážááá·áº nginx-proxy ááŸáá·áº áááœá²ááœá²á
á±ááẠáá»áœááºá¯ááºááá¯á·ááẠááŒá±á¬ááºážáá²áá«áááºá áá«ááᯠááẠáááá¯á¡ááºáá«áá°ážá
Kubernetes á¡á á¯á¡áá±ážááœáẠHelm ááá¬ážááᯠááá·áºááœááºážáá«-
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
áá¯ááºáá«áááºáá á€áá²á·ááá¯á·áá±á¬ Ceph node ááœáẠFS áááºáááºááŒááºážááẠáá±á·áá»áá·áºáá±ážáááºááœááºáá»ááºá¡ááœááºáᬠááá·áºáá»á±á¬áºáááºá áááºážááẠáá»áœááºá¯ááºááá¯á·ááá¯ááºáá±á¬ááºááŸá¯ááŒá
áºáááºá
áá±á¬ááºáá¯á¶ážá¡áá±ááŸáá·áºá CephFS ááá á¹á ááœáẠvolumes áá»á¬ážááᯠá¡ááœááºá¡á á¬ážááŒá±á¬ááºážáá²ááŒááºážááŒáá·áº á¡áá¬áá»á¬áž áááºááá¯á·áá¯ááºáá±á¬ááºáááºááᯠá á áºáá±ážááŒáá·áºááŒáá«á áá¯á·á Kubernetes ááá¯á·ááŒááºááœá¬ážááŒá®áž PVC á¡ááœáẠáá»áœááºá¯ááºááá¯á·ááááºáá®ážáááºá áºááᯠáááºážááŒááºááŒáá«á áá¯á· - ááá¯áá±áá¬ááœáẠá¡ááœááºá¡á á¬ážááᯠá¥ááá¬á¡á¬ážááŒáá·áº 7Gi ááá¯á· ááá¯ážáá«á
áááºážááŒááºáá¬ážáá±á¬ ááá¯ááºááᯠá¡áá¯á¶ážááŒá¯ááŒáá«á áá¯á·á
kubectl apply -f pvc.yaml
ááœá²áááºážáááºááá¯ááŒá±á¬ááºážááœá¬ážáá²ááá¯áá¬ááŒáá·áºááá¯á· Mounted directory ááᯠááŒáá·áºááŒáá¡á±á¬ááºá
getfattr -n ceph.quota.max_bytes <каÑалПг-Ñ-ЎаММÑЌО>
á€á¡áááá·áºááᯠáá¯ááºáá±á¬ááºáááºá ááá·áºá áá áºááœáẠáááºáá±á·ááºá»ááᯠááá·áºááœááºážááẠááá¯á¡ááºááá¯ááºáááºá attr.
áá»ááºáá¯á¶ážá ááŒá±á¬ááºáá±ááá·áº áááºá
á€á
á¬áá¯á¶ážáá±á«ááºážáá»á¬ážááŸáá·áº ááŸááºáá»á¬ážáá±á¬ YAML ááá¯ááºáá±á¬áºáá¯á¶áá»á¬ážááẠáá»ááºááŸá¬ááŒááºáá±á«áºááœáẠááŸá¯ááºááœá±ážáá±áá¯á¶áá±á«áºáá±á¬áºáááºáž áááºááœá±á·ááœááºá Slurm áá»á±á¬ááºážáá¬ážáá»á¬ážááẠáááºážááá¯á·ááᯠááŒááºááŒááºáááºááẠááá¯ááºááœááºááá¯ááºááŒáááºá
á€áá±á¬ááºážáá«ážá áá»áœááºá¯ááºááá¯á·ááẠáá±á¬áááºáá²ááá¯á· ááááºáá±á¬ááºáá²á ááá¯á¡ááœáẠááá¬ážááẠá
á¬ááœááºá
á¬áááºáž ááŸááá«áááºá Kubernetes á¡á
á¯á¡áá±ážááŒáá·áº Ceph ááá¯ááŸá±á¬ááºááŸá¯á
áá
áºááá·áºááœááºážááŒááºážá¡áá±ážá
áááºá¡áá»ááºá¡áááºáá»á¬ážááᯠáááºá
áááºáááºá
á¬ážáá«áá á€ááá·áºááºáá»á¬ážááẠáá°áá®áá±ážáá«áááº-
Slurm áááºáááºážááœááº
áá±áá¬ááá¯ááŸá±á¬ááºááŸá¯ááᯠááá¯á
áááºáááºá
á¬ážáááºááá¯áááºá á
á¬áááºážááœááºážááá¯ááºáá«á
áá±á¬ááºážáá«ážáá±ážáá¬ážáá°- Alexander Shvalová á¡ááºáá»ááºáá®áá¬áá±á·áá»áá·áºáá±áž
source: www.habr.com