最新更新:

    安装 Ceph

    您可以选择 Ceph RBDCeph CSI 作为 Ceph 服务器的底层存储插件。Ceph RBD 是 Kubernetes 上的一个树内存储插件,Ceph 容器存储接口(CSI)是一个用于 RBD 和 CephFS 的驱动程序。

    Ceph 插件

    如果你安装的是 Ceph v14.0.0(Nautilus)及以上版本,那么推荐您使用 Ceph CSI RBD。原因如下:

    • 树内存储插件将会被弃用。
    • Ceph RBD 只适用于使用 hyperkube 镜像的 Kubernetes 集群,而 hyperkube 镜像 从 Kubernetes 1.17 开始已被弃用
    • Ceph CSI 功能更丰富,如克隆,扩容和快照。

    Ceph CSI RBD

    您需要安装 Kubernetes(v1.14.0 及以上版本)和 Ceph v14.0.0(Nautilus)及以上版本。有关兼容性的详细信息,请参见 Ceph CSI 支持矩阵

    以下是 Helm Charts 安装的 Ceph CSI RBD 的 KubeKey 插件配置示例。由于 StorageClass 不包含在 chart 中,因此需要在插件中配置 StorageClass。

    Chart 配置

    csiConfig:
      - clusterID: "cluster1"
        monitors:
          - "192.168.0.8:6789"     # <--TobeReplaced-->
          - "192.168.0.9:6789"     # <--TobeReplaced-->
          - "192.168.0.10:6789"    # <--TobeReplaced-->
    

    如果你想配置更多的参数,请参见 ceph-csi-rbd 的 chart 配置

    StorageClass 配置(包含保密字典)

    apiVersion: v1
    kind: Secret
    metadata:
      name: csi-rbd-secret
      namespace: kube-system
    stringData:
      userID: admin
      userKey: "AQDoECFfYD3DGBAAm6CPhFS8TQ0Hn0aslTlovw=="    # <--ToBeReplaced-->
    ---
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
       name: csi-rbd-sc
       annotations:
         storageclass.beta.kubernetes.io/is-default-class: "true"
         storageclass.kubesphere.io/supported-access-modes: '["ReadWriteOnce","ReadOnlyMany","ReadWriteMany"]'
    provisioner: rbd.csi.ceph.com
    parameters:
       clusterID: "cluster1"
       pool: "rbd"    # <--ToBeReplaced-->
       imageFeatures: layering
       csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret
       csi.storage.k8s.io/provisioner-secret-namespace: kube-system
       csi.storage.k8s.io/controller-expand-secret-name: csi-rbd-secret
       csi.storage.k8s.io/controller-expand-secret-namespace: kube-system
       csi.storage.k8s.io/node-stage-secret-name: csi-rbd-secret
       csi.storage.k8s.io/node-stage-secret-namespace: kube-system
       csi.storage.k8s.io/fstype: ext4
    reclaimPolicy: Delete
    allowVolumeExpansion: true
    mountOptions:
       - discard
    

    插件配置

    将上面的 chart 配置和 StorageClass 保存到本地(例如 /root/ceph-csi-rbd.yaml/root/ceph-csi-rbd-sc.yaml)。插件配置如下所示:

    addons: 
    - name: ceph-csi-rbd
      namespace: kube-system
      sources:
        chart:
          name: ceph-csi-rbd
          repo: https://ceph.github.io/csi-charts
          valuesFile: /root/ceph-csi-rbd.yaml
    - name: ceph-csi-rbd-sc
      sources:
        yaml:
          path:
          - /root/ceph-csi-rbd-sc.yaml
    

    Ceph RBD

    Kubekey 没有使用 hyperkube 镜像。因此,树内 Ceph RBD 可能无法在使用 KubeKey 安装的 Kubernetes 上工作。如果你的 Ceph 集群版本低于 14.0.0,Ceph CSI 将不能使用,但是由于 RBD 格式和 Ceph RBD 相同,可以作为 Ceph RBD 的替代选项。下面是由 Helm Charts 安装的 RBD Provisioner 的 KubeKey 插件配置示例,其中包括 StorageClass。

    Chart 配置

    ceph:
      mon: "192.168.0.12:6789"    # <--ToBeReplaced-->
      adminKey: "QVFBS1JkdGRvV0lySUJBQW5LaVpSKzBRY2tjWmd6UzRJdndmQ2c9PQ=="   # <--ToBeReplaced-->
      userKey: "QVFBS1JkdGRvV0lySUJBQW5LaVpSKzBRY2tjWmd6UzRJdndmQ2c9PQ=="    # <--ToBeReplaced-->
    sc:
      isDefault: false
    

    如果你想配置更多的参数,请参见 RBD-Provisioner 的 chart 配置

    插件配置

    将上面的 chart 配置保存到本地(例如 /root/rbd-provisioner.yaml)。RBD Provisioner Cloud 的插件配置如下所示:

    - name: rbd-provisioner
      namespace: kube-system
      sources:
        chart:
          name: rbd-provisioner
          repo: https://charts.kubesphere.io/test
          valuesFile: /root/rbd-provisioner.yaml