k8s 动态扩容 Ceph 持久卷

主要是针对 ceph 的 rbd 创建的 pv 进行扩容操作。

StorageClass 配置自动扩容

需要配置 storage class,开启允许扩容选项 allowVolumeExpansion

apiVersion: storage.k8s.io/v1
kind: StorageClass
allowVolumeExpansion: true
provisioner: ceph.com/rbd

任何从这一 StorageClass 中创建的 PVC 都能够通过编辑的方式来申请更多空间。Kubernetes 会处理 Storage 字段的变更,据此申请空间,触发卷的扩容。

对已创建的 PV 进行扩容

  1. 查看 PV 信息

    $ kubectl describe pv pvc-3e1e651c-fcce-4a31-8283-8b5d7f4859fc |grep Image
        RBDImage:      kubernetes-dynamic-pvc-dbaa94d7-ecdd-11ea-a4f5-aedb151bd819
  2. 查看 rbd 镜像信息

    $ rbd info kcha/kubernetes-dynamic-pvc-dbaa94d7-ecdd-11ea-a4f5-aedb151bd819
    rbd image 'kubernetes-dynamic-pvc-dbaa94d7-ecdd-11ea-a4f5-aedb151bd819':
            size 30 GB in 256000 objects
            order 22 (4096 kB objects)
            block_name_prefix: rbd_data.b642e6b8b4567
            format: 2
            features: layering
            flags:
  3. 修改 rbd 大小

    $ rbd resize --size 1024000 kcha/kubernetes-dynamic-pvc-dbaa94d7-ecdd-11ea-a4f5-aedb151bd819
  4. 更新 PV 大小

    $ kubectl edit pv pvc-3e1e651c-fcce-4a31-8283-8b5d7f4859fc

    修改其中的 storage: 30Gi 大小。然后 kubectl get pv 查看更新。

  5. 更新 PVC 大小

    $ kubectl edit pvc esdata-es-0

    修改其中的 storage: 30Gi 大小。然后 kubectl get pvc 查看更新。

  6. 重启挂载该 PVC 的 Pod。