安装 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 配置

  1. csiConfig:
  2. - clusterID: "cluster1"
  3. monitors:
  4. - "192.168.0.8:6789" # <--TobeReplaced-->
  5. - "192.168.0.9:6789" # <--TobeReplaced-->
  6. - "192.168.0.10:6789" # <--TobeReplaced-->

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

StorageClass 配置(包含保密字典)

  1. apiVersion: v1
  2. kind: Secret
  3. metadata:
  4. name: csi-rbd-secret
  5. namespace: kube-system
  6. stringData:
  7. userID: admin
  8. userKey: "AQDoECFfYD3DGBAAm6CPhFS8TQ0Hn0aslTlovw==" # <--ToBeReplaced-->
  9. ---
  10. apiVersion: storage.k8s.io/v1
  11. kind: StorageClass
  12. metadata:
  13. name: csi-rbd-sc
  14. annotations:
  15. storageclass.beta.kubernetes.io/is-default-class: "true"
  16. storageclass.kubesphere.io/supported-access-modes: '["ReadWriteOnce","ReadOnlyMany","ReadWriteMany"]'
  17. provisioner: rbd.csi.ceph.com
  18. parameters:
  19. clusterID: "cluster1"
  20. pool: "rbd" # <--ToBeReplaced-->
  21. imageFeatures: layering
  22. csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret
  23. csi.storage.k8s.io/provisioner-secret-namespace: kube-system
  24. csi.storage.k8s.io/controller-expand-secret-name: csi-rbd-secret
  25. csi.storage.k8s.io/controller-expand-secret-namespace: kube-system
  26. csi.storage.k8s.io/node-stage-secret-name: csi-rbd-secret
  27. csi.storage.k8s.io/node-stage-secret-namespace: kube-system
  28. csi.storage.k8s.io/fstype: ext4
  29. reclaimPolicy: Delete
  30. allowVolumeExpansion: true
  31. mountOptions:
  32. - discard

插件配置

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

  1. addons:
  2. - name: ceph-csi-rbd
  3. namespace: kube-system
  4. sources:
  5. chart:
  6. name: ceph-csi-rbd
  7. repo: https://ceph.github.io/csi-charts
  8. valuesFile: /root/ceph-csi-rbd.yaml
  9. - name: ceph-csi-rbd-sc
  10. sources:
  11. yaml:
  12. path:
  13. - /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 配置

  1. ceph:
  2. mon: "192.168.0.12:6789" # <--ToBeReplaced-->
  3. adminKey: "QVFBS1JkdGRvV0lySUJBQW5LaVpSKzBRY2tjWmd6UzRJdndmQ2c9PQ==" # <--ToBeReplaced-->
  4. userKey: "QVFBS1JkdGRvV0lySUJBQW5LaVpSKzBRY2tjWmd6UzRJdndmQ2c9PQ==" # <--ToBeReplaced-->
  5. sc:
  6. isDefault: false

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

插件配置

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

  1. - name: rbd-provisioner
  2. namespace: kube-system
  3. sources:
  4. chart:
  5. name: rbd-provisioner
  6. repo: https://charts.kubesphere.io/test
  7. valuesFile: /root/rbd-provisioner.yaml