Ceph Mimic/Nautilus - 启用Dashboard功能

本文详细介绍了如何在Ceph集群中部署和使用原生Dashboard功能,包括查看集群状态、启用Dashboard、生成证书、配置服务地址及端口、创建用户密码等步骤,并提供从Luminous到Nautilus版本的升级经验。

Ceph 的监控可视化界面方案很多----grafana、Kraken。但是从Luminous开始,Ceph 提供了原生的Dashboard功能,通过Dashboard可以获取Ceph集群的各种基本状态信息。

1.查看ceph状态

[root@controller ~]# ceph -s
  cluster:
    id:     25dae5c3-3fa7-44a4-9f35-7f0b288e26c9
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: node1(active), standbys: node2, node3
    mds: cephfs-1/1/1 up  {0=node1=up:active}
    osd: 3 osds: 2 up, 2 in
    rgw: 2 daemons active
 
  data:
    pools:   7 pools, 168 pgs
    objects: 257  objects, 136 MiB
    usage:   2.3 GiB used, 7.7 GiB / 10 GiB avail
    pgs:     168 active+clean

2.启用

[root@controller ~]# ceph mgr module enable dashboard
[root@controller ~]# ceph-deploy mgr create node1
[root@controller ~]# ceph mgr module enable dashboard

3.生成并安装一个 自签名证书

[root@node1 ~]# ceph dashboard create-self-signed-cert
Self-signed certificate created

4.生成密钥,生成两个文件----dashboard.crt  dashboard.key 

mkdir mgr-dashboard

cd mgr-dashboard

openssl req -new -nodes -x509   -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650   -keyout dashboard.key -out dashboard.crt -extensions v3_ca

 5.配置服务地址、端口,默认的端口是8443

[root@node1 mgr-dashboard]# ceph config set mgr mgr/dashboard/server_addr 192.168.236.131
[root@node1 mgr-dashboard]# ceph config set mgr mgr/dashboard/server_port 8443
[root@node1 mgr-dashboard]# ceph mgr services
{
    "dashboard": "https://node1:8443/"
}

6.创建一个用户、密码

[root@node1 mgr-dashboard]# ceph dashboard set-login-credentials admin admin

 7.重启

[root@node1 ~]# systemctl restart ceph-mgr@node1

8.访问:https://ip:8443

---------------------------------------------------------------------------------------------------------------------------------------------------------

2020.07.15 ceph升级到nautilus版本,dashboard新版也试用几个月,变化比较大,界面内容也丰富了许多。

2020.09.16 之前忘记说明,nautilus版需要在所有mgr节点安装 ceph-mgr-dashboard,然后开启dashboard。

 yum install -y ceph-mgr-dashboard 

查看是否已安装module:
    ceph mgr module ls |grep dashboard

 

参考方案:

1.http://docs.ceph.com/docs/master/mgr/dashboard/

2.http://www.yangguanjun.com/2018/09/15/ceph-mimic-dashboard-intro/

<think>嗯,用户现在问的是为什么他的Ceph MGR的Endpoints(EP)丢失了Pod IP。之前他提过关于非活跃MGR节点修改数据的问题,现在可能是在部署或维护Ceph集群时遇到了服务发现的问题。我需要先回忆一下Kubernetes中Endpoints的机制,以及Ceph特别是Rook部署时MGR的相关配置。 首先,Endpoints资源通常由Service对象自动管理,当Service的selector匹配到Pod的标签时,对应的Pod IP和端口会被填入Endpoints。如果用户看到的Endpoints是<none>,说明没有匹配的Pod或者Pod没有正确运行。 可能的原因有几个:首先是MGR Pod本身没有正常运行,比如CrashLoopBackOff状态,或者节点资源不足导致无法调度。这时候需要检查Pod的状态,用kubectl describe pod看看事件日志。其次是Service的selector标签和Pod的标签不匹配,可能配置错误或者本更新后的标签变更。比如Rook的Service可能期望app=rook-ceph-mgr这样的标签,而Pod实际可能有不同的标签。另外,网络策略或者安全组设置可能阻止了Pod与Kubernetes API通信,导致Endpoints无法更新。还有可能是Rook Operator的问题,比如本不兼容或者配置错误,导致没有正确创建或更新Service和Endpoints。 用户提供的输出中,rook-ceph-mgr相关的Endpoints都没有IP,而其他服务如nginx和exporter是正常的。这可能意味着MGR Pod没有正确启动或者Service配置有问题。需要指导用户检查MGR Pod的状态,确认是否处于Running状态,并检查相关日志。同时,核对Service的selector是否匹配Pod的标签,可能需要用kubectl describe service rook-ceph-mgr来查看详细信息。另外,如果MGR实例数量不足,比如配置了多个但只有一个处于active状态,其他处于standby,但Kubernetes Service可能需要所有Pod都就绪才会更新Endpoints,这也可能导致问题。 用户可能是在部署或升级Rook/Ceph时遇到了这个问题,或者手动修改了某些配置导致标签不匹配。需要建议用户按照步骤排查:检查Pod状态、检查标签匹配、检查网络策略、查看Operator日志等。同时提醒用户不要手动修改Endpoints,而是通过调整Service或Deployment配置来解决问题,确保Rook Operator正常运行,因为Operator负责管理这些资源。</think>在Ceph集群(尤其是通过Rook部署的场景)中,MGR的Endpoint(`rook-ceph-mgr`)出现`<none>`表示Kubernetes未能正确关联Pod IP到Service。以下是可能原因及排查步骤: --- ### 一、**直接原因** 当`ENDPOINTS`列为`<none>`时,通常表示: 1. 对应的MGR Pod未处于`Running`状态 2. Service的Label Selector与Pod Labels不匹配 3. 网络策略(NetworkPolicy)或安全组阻止了Pod注册 4. Rook Operator未正确配置MGR服务 --- ### 二、**具体排查步骤** #### 1. **检查MGR Pod状态** ```bash kubectl -n rook-ceph get pods -l app=rook-ceph-mgr ``` - **预期输出**:应有至少1个`Running`状态的Pod(例如`rook-ceph-mgr-a-xxxxx`) - **异常情况**: - Pod处于`CrashLoopBackOff`:检查日志 `kubectl logs -f <mgr-pod-name>` - Pod未调度:检查节点资源(`kubectl describe pod <mgr-pod-name>`查看`Events`) #### 2. **验证Service与Pod的标签匹配** ```bash # 查看Service的Selector kubectl -n rook-ceph describe service rook-ceph-mgr # 查看Pod的Labels kubectl -n rook-ceph get pods -l app=rook-ceph-mgr --show-labels ``` - **关键点**:Service的`Selector`(如`app=rook-ceph-mgr,ceph_daemon_type=mgr`)必须与Pod Labels完全匹配 #### 3. **检查网络策略** - 如果集群启用了**NetworkPolicy**,确认允许MGR Pod的流量: ```yaml # 示例:允许MGR流量 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-ceph-mgr spec: podSelector: matchLabels: app: rook-ceph-mgr ingress: - ports: - protocol: TCP port: 9283 # MGR默认指标端口 ``` #### 4. **检查Rook配置** - 在Rook的`CephCluster` CR中确认MGR配置: ```yaml apiVersion: ceph.rook.io/v1 kind: CephCluster metadata: name: rook-ceph spec: mgr: count: 1 # 确保至少1个MGR实例 modules: # 确保必要模块已启用 - name: dashboard enabled: true ``` --- ### 三、**常见修复方案** #### 场景1:MGR Pod未运行 - **操作**: ```bash # 强制删除Pod触发重建 kubectl -n rook-ceph delete pod -l app=rook-ceph-mgr ``` - **后续观察**:等待30秒后再次检查Pod状态 #### 场景2:标签不匹配 - **操作**:修改Service或Pod的Labels使其匹配 ```bash # 示例:修正Service的Selector kubectl -n rook-ceph edit service rook-ceph-mgr ``` - **注意**:Rook Operator通常会自动管理此配置,手动修改需谨慎 #### 场景3:Raft共识失败(多MGR场景) - **操作**: ```bash # 进入Toolbox检查MGR状态 ceph mgr stat # 若存在多个MGR实例冲突,可减少实例数 kubectl -n rook-ceph edit cephcluster rook-ceph ``` --- ### 四、**补充说明** - **Dashboard相关问题**: `rook-ceph-mgr-dashboard`的Endpoint依赖MGR正常运行。若Dashboard无法访问,需同时检查: ```bash ceph mgr services # 确认dashboard地址和端口 ``` - **外部访问配置**: 若使用`rook-ceph-mgr-dashboard-external-http`,需确认Ingress或NodePort配置正确 --- ### 五、**总结** 当MGR的Endpoint丢失Pod IP时,本质是**Kubernetes服务发现机制异常**。通过上述步骤可定位到具体原因(90%的问题集中在Pod状态或Label匹配)。建议优先检查Rook Operator日志: ```bash kubectl -n rook-ceph logs -l app=rook-ceph-operator ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值