OCP部署Rook-Ceph

 一、概述

在 OpenShift Container Platform(OCP)中,选择块存储还是NFS 存储取决于具体的应用场景。你的选择是块存储,从性能和一致性角度来看,这确实是更优的选择,但也要考虑一些细节。

1、为什么推荐块存储?

1.高性能

  • 块存储(如 Ceph RBD、iSCSI、EBS)提供低延迟、高吞吐量的存储性能,适用于数据库、消息队列、缓存等对存储 IOPS 要求高的应用。

2.数据一致性

  • 块存储提供强一致性,适用于状态ful应用(如 MySQL、PostgreSQL、MongoDB 等)。

3.容器持久化支持更好

  • OCP 支持 Persistent Volume (PV) + Persistent Volume Claim (PVC),块存储可以与这些机制良好结合,确保 Pod 迁移时数据不会丢失。 

2、什么时候适合用 NFS?

1.共享存储需求

  • NFS 适用于多个 Pod 需要共享数据的场景,例如日志存储、共享配置、Web 服务器静态文件(如 WordPress 的 wp-content)。

2.低成本/简单部署

  • NFS 适用于测试环境,或者不需要高性能、强一致性的应用场景,例如CI/CD 构建缓存、备份存储等。 

3、综合建议

  • 数据库、分布式存储块存储 ✅(高性能、低延迟)

  • 共享存储(Web 服务器、CI/CD 构建缓存)NFS ✅(简单、可共享)

  • 混合部署:如果你有一些需要高性能的数据存储(数据库)和一些共享文件存储(配置、日志),可以同时使用块存储 + NFS。

二、OCP部署Rook-Ceph

Rook-Ceph 可以在 OCP 里自动管理 Ceph,省去手动配置 Ceph 集群的复杂性,尤其是 基于 VM 部署时,更容易管理存储和扩展

1、OCP 里部署 Rook-Ceph 的完整步骤

  1. 在每个 OCP Worker 节点提供一块额外的磁盘(裸设备,未格式化)。

  2. 安装 Rook-Ceph Operator(自动管理 Ceph)。

  3. 创建 CephCluster 资源(Rook 自动创建 OSD、MON、MGR)。

  4. 配置 StorageClass(让 OCP 使用 Ceph 存储)。

  5. 创建 PVC(在 OCP 里给 IBM CP4BA 挂载存储)。 

2、准备 OCP 计算节点

在每个 OCP Worker 节点上,确保至少 有 1 块额外磁盘,且该磁盘未格式化:

lsblk

 示例输出:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    252:0    0   40G  0 disk /
vdb    252:1    0  100G  0 disk  # 用于 Ceph 存储

 ✅ 确保 vdb(100GB)未被挂载或使用

3、安装 Rook-Ceph Operator

在 OpenShift 里执行

kubectl create namespace rook-ceph
kubectl apply -f https://github.com/rook/rook/raw/master/deploy/examples/crds.yaml
kubectl apply -f https://github.com/rook/rook/raw/master/deploy/examples/common.yaml
kubectl apply -f https://github.com/rook/rook/raw/master/deploy/examples/operator.yaml

这样 OCP 里就有 Rook-Ceph 了。

4、创建 Ceph 集群

创建 ceph-cluster.yaml,并让 Rook-Ceph 负责集群:

apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
  name: my-ceph
  namespace: rook-ceph
spec:
  dataDirHostPath: /var/lib/rook
  mon:
    count: 3
  storage:
    useAllNodes: true
    useAllDevices: true  # 让 Rook 自动发现 OSD
  dashboard:
    enabled: true  # 开启 Ceph Dashboard

✅ 这样,Rook-Ceph 会自动管理 Ceph OSD、MON、MGR

5、配置 StorageClass

创建 ceph-storageclass.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: rook-ceph-block
provisioner: rook-ceph.rbd.csi.ceph.com
parameters:
  clusterID: rook-ceph
  pool: replicapool
  imageFormat: "2"
  imageFeatures: "layering"
reclaimPolicy: Retain
kubectl apply -f ceph-storageclass.yaml

6、在 OCP 里使用 Ceph 存储

创建 PVC,例如给 IBM CP4BA 用:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: cp4ba-db-storage
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  storageClassName: rook-ceph-block
kubectl apply -f pvc.yaml

这样,IBM CP4BA 部署时就可以挂载 PVC!

7、访问 Ceph Dashboard

查看 Ceph Dashboard 地址:

kubectl get svc -n rook-ceph

 找到类似:

rook-ceph-mgr-dashboard ClusterIP 10.43.120.99 8080/TCP

 然后端口转发:

kubectl port-forward -n rook-ceph svc/rook-ceph-mgr-dashboard 8443:8080

 ✅ 浏览器访问 https://localhost:8443,即可管理 Ceph!🎉

8、总结

Rook-Ceph 让 OCP 里管理 Ceph 更简单

  1. 自动管理 OSD、MON、MGR

  2. 提供 StorageClass,直接让 OCP 使用

  3. 内置 Ceph Dashboard

  4. 无需手动安装 Ceph CSI 插件

三、OCP连接现有的Ceph RBD

1、安装 Ceph CSI 插件

Ceph CSI 插件允许 OpenShift 通过 Container Storage Interface (CSI) 使用 Ceph 存储。

(1)创建 ceph-csi 命名空间

kubectl create namespace ceph-csi

 (2)部署 Ceph CSI 插件

kubectl apply -f https://raw.githubusercontent.com/ceph/ceph-csi/devel/deploy/rbd/kubernetes/csi-config-map.yaml
kubectl apply -f https://raw.githubusercontent.com/ceph/ceph-csi/devel/deploy/rbd/kubernetes/csi-rbdplugin.yaml
kubectl apply -f https://raw.githubusercontent.com/ceph/ceph-csi/devel/deploy/rbd/kubernetes/csi-rbdplugin-provisioner.yaml

这样,OpenShift 内部就有 Ceph CSI 插件了

2、创建 Ceph 认证 Secret

OCP 需要用 Ceph 认证信息访问 RBD。

(1)获取 Ceph 客户端密钥

ceph auth get-key client.admin

输出示例: 

AQATzT5dAAAAABAAABABXl==

(2)创建 Secret

apiVersion: v1
kind: Secret
metadata:
  name: ceph-secret
  namespace: default  # 修改为你的 IBM CP4BA 命名空间
data:
  userID: YWRtaW4=  # base64 编码的 "admin"
  userKey: AQATzT5dAAAAABAAABABXl==  # base64 编码的密钥
kubectl apply -f ceph-secret.yaml

这样,OpenShift 就能使用 Ceph 进行身份验证。

3、创建 Ceph RBD StorageClass

让 OpenShift 通过 CSI 访问 Ceph RBD。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ceph-rbd
provisioner: rbd.csi.ceph.com
parameters:
  clusterID: rook-ceph
  pool: rbd-pool
  imageFormat: "2"
  imageFeatures: "layering"
  csi.storage.k8s.io/provisioner-secret-name: ceph-secret
  csi.storage.k8s.io/provisioner-secret-namespace: default
  csi.storage.k8s.io/node-stage-secret-name: ceph-secret
  csi.storage.k8s.io/node-stage-secret-namespace: default
  fsType: ext4

 ✅ OCP 现在知道 Ceph RBD 是一个可用的存储类型了!

4、在 OCP 里使用 Ceph RBD

IBM CP4BA 需要持久存储,我们创建 PVC 申请 20GB 存储:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: cp4ba-db-storage
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  storageClassName: ceph-rbd
kubectl apply -f pvc.yaml

这样,IBM CP4BA 部署时可以用这个 PVC 挂载存储!

5、总结

  1. 安装 Ceph CSI 插件

  2. 创建 Ceph 认证 Secret

  3. 配置 OpenShift StorageClass

  4. 创建 PVC,IBM CP4BA 申请存储

  5. CP4BA Pod 挂载 PVC

可以用以下命令检查是否正常:

kubectl get sc
kubectl get pvc
kubectl get pods -n ceph-csi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深海科技服务

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值