You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Rook安装Ceph时如何将控制节点作为OSD纳入集群

问题解答

原因说明

你配置了useAllNodes: true但控制节点未被纳入Ceph集群,核心原因是Kubernetes控制节点默认带有node-role.kubernetes.io/control-plane:NoSchedule污点,Rook默认的Pod调度容忍规则不包含该污点,Ceph存储相关Pod无法调度到控制节点,因此控制节点不会被识别为Ceph集群的存储节点。

解决方法

方法1:添加容忍规则(更简便,无需显式罗列所有节点)

直接在CephCluster自定义资源的spec字段下新增控制节点污点的容忍配置,原有storage段配置不需要修改,完整配置示例如下:

apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
  name: rook-ceph
  namespace: rook-ceph
spec:
  # 新增以下容忍配置
  tolerations:
    - key: node-role.kubernetes.io/control-plane
      operator: Exists
      effect: NoSchedule
  # 原有其他配置保持不变
  cephVersion:
    image: quay.io/ceph/ceph:v17.2.6
  # ... 其他原有配置
  storage:                                                                                                                                                                       
    useAllNodes: true
    useAllDevices: true

配置修改完成后重新apply该资源,Rook Operator会自动识别符合要求的控制节点,将其纳入Ceph集群。

方法2:显式罗列存储节点

如果你只需要将部分控制节点纳入Ceph集群,不需要所有节点都加入,可以选择显式指定节点列表,配置示例如下:

storage:
  useAllNodes: false
  useAllDevices: true
  nodes:
    - name: k8s-control-01 # 替换为你的控制节点主机名
    - name: k8s-control-02
    - name: k8s-control-03
    - name: k8s-worker-01 # 替换为你的工作节点主机名
    - name: k8s-worker-02
    - name: k8s-worker-03

注意事项

  • 确认纳入Ceph集群的控制节点上,用于Ceph存储的磁盘未挂载、未创建文件系统,避免原有数据被清空
  • 如果控制节点之前部署过Ceph,需先清理磁盘上的Ceph残留数据,再更新配置

内容的提问来源于stack exchange,提问作者Andreas Florath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:36:03