Kubernetes存储进阶:CSI驱动与动态供给完全指南
存储进阶:CSI驱动与动态供给
StorageClass配置
NFS StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-storage
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner
parameters:
server: nfs-server.example.com
path: /exported/path
onDelete: delete
CephFS StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: cephfs
provisioner: cephfs.csi.ceph.com
parameters:
clusterID:
fsName: cephfs
csi.storage.k8s.io/provisioner-secret-name: csi-cephfs-secret
csi.storage.k8s.io/provisioner-secret-namespace: cephfs
CSI驱动安装
# Ceph CSI
git clone https://github.com/ceph/ceph-csi.git
cd ceph-csi/deploy/rbd/kubernetes
kubectl apply -k .
# AWS EBS CSI
helm repo add aws-ebs-csi-driver https://kubernetes-sigs.github.io/aws-ebs-csi-driver
helm install aws-ebs-csi-driver aws-ebs-csi-driver/aws-ebs-csi-driver \
--namespace kube-system \
--set controller.replicaCount=3
动态供给
创建PVC自动供给
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: fast-storage-pvc
namespace: production
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
storageClassName: fast-storage
默认StorageClass
# 设置默认StorageClass
kubectl patch storageclass fast-storage \
-p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
存储快照与恢复
VolumeSnapshotClass
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: snapshot-class
driver: k8s-sigs.io/nfs-subdir-external-provisioner
parameters:
onDelete: delete
创建快照
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: pvc-snapshot
namespace: production
spec:
volumeSnapshotClassName: snapshot-class
source:
persistentVolumeClaimName: fast-storage-pvc
从快照恢复PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: restored-pvc
namespace: production
spec:
accessModes:
- ReadWriteOnce
dataSource:
kind: VolumeSnapshot
name: pvc-snapshot
resources:
requests:
storage: 50Gi
存储迁移
# 迁移数据
kubectl exec -it migration-pod -- rsync -avz /source/ /destination/
# 克隆PVC
kubectl apply -f - << EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cloned-pvc
namespace: production
spec:
dataSource:
kind: PersistentVolumeClaim
name: original-pvc
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
EOF
多存储类管理
# 根据需求选择存储类
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: tiered-storage-pvc
namespace: production
labels:
tier: database
spec:
accessModes:
- ReadWriteOnce
dataSource:
kind: StorageClass
name: fast-storage
resources:
requests:
storage: 100Gi
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。







