我正在尝试在我的 kubernetes 集群上建立一个 rook Ceph 集群。
地形:
- 3 个 Kubernetes 节点(全部都是主/工作节点)
- 每个节点上都有用于 ceph 的 /dev/vdX
- 每个节点都旨在作为 ceph 集群的一部分工作
我使用 Helm Chart 部署了 Rook Operator,其值如下:
image:
tag: v1.5.8
pullPolicy: IfNotPresent
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 100m
memory: 256Mi
enableFlexDriver: false
enableDiscoveryDaemon: true
完全初始化后,我尝试使用以下清单创建一个集群。
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
name: maincluster
namespace: rook
spec:
cephVersion:
image: ceph/ceph:v15.2.9
dataDirHostPath: /var/lib/rook
mon:
count: 3
allowMultiplePerNode: false
mgr:
modules:
- name: pg_autoscaler
enabled: false
dashboard:
enabled: true
ssl: true
monitoring:
enabled: false
rulesNamespace: rook
cleanupPolicy:
sanitizeDisks:
method: quick
storage: # cluster level storage configuration and selection
useAllNodes: true
useAllDevices: true
运行这些程序后,大多数东西似乎都正常工作了。一个 pod 显示错误,但它似乎与我当前遇到的问题无关;似乎更像是一种症状(它是 csi-rbdplugin pod)。
我可以用我创建的入口加载仪表板。但是,当我在仪表板上尝试创建 OSD 或执行其他操作时,会弹出一个提示框
Orchestrator 不可用。请参阅文档以了解如何配置和启用该功能。
其中的文档链接将我带到这个 404 页面,所以这没什么帮助。
我尝试过在其他地方搜索,但似乎没有太多关于该特定错误消息的信息。
有人知道我做错了什么,导致 Orchestrator 不可用而我什么也做不了?
答案1
我能够摆脱这个警告并启用编排器。
首先按照以下步骤安装 Rook Toolbox如何
然后执行到工具箱中:kubectl -n rook-ceph exec -it rook-ceph-tools-78cdfd976c-sclh9 -- /bin/bash
到达那里后,运行以下命令:
[root@rook-ceph-tools-78cdfd976c-sclh9 /]# ceph mgr module enable rook
[root@rook-ceph-tools-78cdfd976c-sclh9 /]# ceph orch set backend rook
[root@rook-ceph-tools-78cdfd976c-sclh9 /]# ceph orch status
Backend: rook
Available: True
ceph orch status
应显示如上例所示的输出。
此后,Rook Dashboard 中不再出现任何警告。
答案2
虽然orchestrator
Ceph 模块默认是启用的,但rook
Ceph 模块默认是禁用的。
对于使用 Rook Helm Charts 的任何人(从 Rook 版本 1.12.2 开始,已使用 Ceph Reef 18.2.0 进行测试)。您可以rook
使用以下 Helm Chart 值启用该模块:
对于 Rook OrchestratorHelm Chart:
enableDiscoveryDaemon: true # Not strictly necessary to enable the rook module, but is a pre-requisite to enable features from it.
对于 Rook 集群Helm Chart:
cephClusterSpec:
mgr:
modules:
- name: pg_autoscaler # This is already enabled by default, but needs to be here so that we don't override the default behavior.
enabled: true
- name: rook # This enables the rook module.
enabled: true
这可以使用声明性配置来应用,而当前答案需要手动干预来配置。