Kubernetes 1.31 + CephFS CSI 的部署和使用说明

1️⃣ 部署 CephFS CSI 驱动
如果不用 Rook,可以直接用 Ceph CSI 官方 YAML 安装:
git clone --depth=1 https://github.com/ceph/ceph-csi.git cd ceph-csi/deploy/cephfs/kubernetes kubectl apply -f csi-cephfsplugin.yaml kubectl apply -f csi-cephfsplugin-provisioner.yaml
如果你的 K8s 节点没有 ceph-common 包,需要提前安装(用于挂载 CephFS)。
2️⃣ 创建访问 CephFS 的 Secret
yaml复制编辑apiVersion: v1 kind: Secret metadata: name: cephfs-secret namespace: default stringData: adminID: csi adminKey: AQDxxxxxxxxxxxxxxxxxxx==
获取 key:
bash复制编辑ceph auth get-key client.csi
3️⃣ 创建 StorageClass
yaml复制编辑apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-cephfs-sc provisioner: cephfs.csi.ceph.com parameters: clusterID: <你的 Ceph FSID> fsName: cephfs pool: cephfs_data csi.storage.k8s.io/provisioner-secret-name: cephfs-secret csi.storage.k8s.io/provisioner-secret-namespace: default csi.storage.k8s.io/node-stage-secret-name: cephfs-secret csi.storage.k8s.io/node-stage-secret-namespace: default reclaimPolicy: Delete allowVolumeExpansion: true
4️⃣ 创建 PVC(多 Pod 共享读写)
yaml复制编辑apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cephfs-pvc spec: accessModes: - ReadWriteMany storageClassName: csi-cephfs-sc resources: requests: storage: 20Gi
5️⃣ Pod 挂载示例
yaml复制编辑apiVersion: v1 kind: Pod metadata: name: cephfs-test-pod spec: containers: - name: app image: busybox command: ["/bin/sh", "-c", "sleep 3600"] volumeMounts: - name: cephfs-vol mountPath: /mnt/cephfs volumes: - name: cephfs-vol persistentVolumeClaim: claimName: cephfs-pvc
6️⃣ 使用建议
- Kubernetes 1.31 必须用 CSI 驱动,不能再用老的
kubernetes.io/cephfs
。 - 如果要生产部署,建议配合 Rook 管理 Ceph 集群,这样 CSI 自动部署、升级和配置更方便。
- 如果 CephFS 工作目录很大,建议在 StorageClass 中合理设置
mounter: fuse
或mounter: kernel
,并保持内核和 Ceph 版本兼容。