问题描述
该笔记将记录:部署 Ceph Dashboard 的方法,以对集群进行管理、监控等操作。
解决方案
诸如 PVE、Rook Ceph 等等,都使用 Ceph 服务,所以我们将分别讨论各种环境启用服务的方法;
for Proxmox VE
[TUTORIAL] – [Nautilus] activating CEPH DASHBOARD
Ceph Dashboard — Ceph Documentation
apt-get install ceph-mgr-dashboard # 需要在每个节点中执行 # 配置 TLS 信息 ceph config set mgr mgr/dashboard/ssl false # 我们选择禁用 # 创建管理用户 ceph dashboard ac-user-create admin administrator -i /tmp/password # 查看访问地址 ceph mgr services # 浏览器访问:8080 for HTTP, 8443 for HTTPS ...
for Rook Ceph
参考 Rook Ceph Documentation/Ceph Dashboard 文档,以获取详细说明;
服务开启
我们通过 Rook Ceph 的 Helm Chart 进行部署,所以该部分描述的配置方法与此部署方式相关;
rook-ceph-cluster.helm-values.yaml
...
cephClusterSpec:
dashboard:
enabled: true
...
ingress:
dashboard:
annotations:
cert-manager.io/cluster-issuer: letsencrypt
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/server-snippet: |
proxy_ssl_verify off;
host:
name: ceph-dashboard.example.com
tls:
- hosts:
- ceph-dashboard.example.com
secretName: ceph-dashboard
ingressClassName: nginx
...
用户登录
# 用户:
admin
# 密码:
kubectl -n rook-ceph get secret rook-ceph-dashboard-password \
-o jsonpath="{['data']['password']}" | base64 --decode && echo
[WIP] 查看 Dashboard / Physical Disks 信息(存在问题)
默认 Dashboard / Physical Disks 并不会显示,需要开启 Rook Manager Module 才能正常工作;
rook-ceph-cluster.helm-values.yaml:
...
cephClusterSpec:
mgr:
modules:
- name: rook
enabled: true
...
rook-ceph.helm-values.yaml:
# ROOK_ENABLE_DISCOVERY_DAEMON: true enableDiscoveryDaemon: true # ROOK_DISCOVER_DEVICES_INTERVAL: 60m // 在 Helm Chart 中,我们未找到对应的配置方法
在部署后,访问 Dashboard 界面,产生如下错误:
[b'{"status": "500 Internal Server Error", "detail": "The
server encountered an unexpected condition which prevented
it from fulfilling the request.", "request_id": "e45ae619-2303-41e4-b59f-fdcd166bfc50"}']
// 查看 MGR 日志,显示如下错误信息:
...
[rook ERROR rook.rook_cluster] No storage class exists matching configured Rook orchestrator storage class which currently is <local>. This storage class can be set in ceph config (mgr/rook/storage_class)[rook ERROR orchestrator._interface] No storage class exists matching name provided in ceph config at mgr/rook/storage_class
// 我们尝试创建 local 存储类
// https://github.com/rook/rook/blob/master/tests/integration/ceph_mgr_test.go
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: local
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
// 但是,依旧会产生如下错误
MGR_MODULE_ERROR: Module 'rook' has failed: ({'type': 'ERROR', 'object': {'api_version': 'v1', 'kind': 'Status', 'metadata': {'annotations': None, 'cluster_name': None, 'creation_timestamp': None, 'deletion_grace_period_seconds': None, 'deletion_timestamp': None, 'finalizers': None, 'generate_name': None, 'generation': None, 'initializers': None, 'labels': None, 'managed_fields': None, 'name': None, 'namespace': None, 'owner_references': None, 'resource_version': None, 'self_link': None, 'uid': None}, 'spec': None, 'status': {'addresses': None, 'allocatable': None, 'capacity': None, 'conditions': None, 'config': None, 'daemon_endpoints': None, 'images': None, 'node_info': None, 'phase': None, 'volumes_attached': None, 'volumes_in_use': None}}, 'raw_object': {'kind': 'Status', 'apiVersion': 'v1', 'metadata': {}, 'status': 'Failure', 'message': 'too old resource version: 96328407 (96328413)', 'reason': 'Expired', 'code': 410}}) Reason: None
MON_DOWN: 1/3 mons down, quorum f,g
参考文献
Ceph Documentation/Ceph Dashboard
Rook Ceph Documentation/Ceph Dashboard