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

2025年8月13日 zhangdd 71 0 评论 kubernetes

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: fusemounter: kernel,并保持内核和 Ceph 版本兼容。

本文出自张佃栋de博客,转载时请注明出处及相应链接。

本文永久链接: https://blog.zhangdd.com/blog/86/

最后编辑: 2025/08/13

©著作权归作者所有