Kubernetes(k8s) 中如何使用 Ceph 存储来管理 PersistentVolume(PV)?

问题浏览数Icon
5
问题创建时间Icon
2025-04-26 20:59:00
回答 | 共 1 个
作者头像
quickstep22

在Kubernetes中使用Ceph存储管理PersistentVolume(PV)的核心步骤如下:

  1. Ceph集群部署:搭建Ceph集群并创建存储池(RBD)或文件系统(CephFS)。确保Kubernetes节点网络与Ceph集群互通。

  2. 认证配置

    • 生成Ceph用户密钥(如client.k8s),通过ceph auth get-key获取密钥。
    • 在Kubernetes中创建Secret存储认证信息(如monitor地址、用户密钥),例如:
      apiVersion: v1
      kind: Secret
      metadata:
      name: ceph-secret
      type: "kubernetes.io/rbd"
      data:
      key: <base64编码的Ceph用户密钥>
  3. CSI驱动集成

    • 部署Ceph CSI插件(如csi-rbdplugincsi-cephfsplugin),替代传统in-tree驱动以实现更灵活的存储管理。
  4. StorageClass定义

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
     name: ceph-rbd
    provisioner: rbd.csi.ceph.com
    parameters:
     clusterID: <Ceph集群ID>
     pool: k8s_pool
     imageFeatures: layering
    reclaimPolicy: Delete
  5. 动态资源分配:用户通过PVC触发自动PV创建。示例PVC:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
     name: ceph-pvc
    spec:
     storageClassName: ceph-rbd
     accessModes: ["ReadWriteOnce"]
     resources:
       requests:
         storage: 5Gi
  6. Pod挂载验证:在Pod中引用PVC测试数据持久化能力,检查跨节点调度时的存储状态一致性。

关键注意事项

  • 网络策略需开放Ceph monitor端口(默认6789)及OSD通信端口
  • 建议启用Ceph RBD镜像的fast-diffdeep-flatten特性以支持高级功能
  • 通过ceph osd pool application enable命令标记存储池用途
  • 监控需同时覆盖Ceph集群健康状态(如PG分布、OSD利用率)及Kubernetes PV/PVC使用量

灾备方案

  • 利用Ceph RBD镜像快照创建定期备份
  • 结合Velero实现应用级存储迁移
  • 配置Ceph纠删码池提升数据可靠性

此方案通过CSI实现存储与计算解耦,支持在线扩容、多访问模式等企业级需求,建议生产环境使用Ceph v16+(Pacific)与Kubernetes v1.23+版本组合。