rook-ceph

前面安装部暑步骤已经完成了rook-ceph的安装了,下面讲述一下如下使用和管理rook-ceph:

toolbox部署
[root@kubemaster01 rook-ceph]# cd rook/cluster/examples/kubernetes/ceph/
[root@kubemaster01 ceph]# kubectl apply -f toolbox.yaml
[root@kubemaster01 ceph]# kubectl exec -it pod/rook-ceph-tools-6b4889fdfd-zqdqm -n rook-ceph /bin/bash
Dashboard访问

查看ceph的服务:

[root@kubemaster01 ceph]# kubectl get svc -n rook-ceph
NAME                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
csi-cephfsplugin-metrics   ClusterIP   10.105.106.114   <none>        8080/TCP,8081/TCP   34m
csi-rbdplugin-metrics      ClusterIP   10.101.27.161    <none>        8080/TCP,8081/TCP   34m
rook-ceph-mgr              ClusterIP   10.101.108.79    <none>        9283/TCP            28m
rook-ceph-mgr-dashboard    ClusterIP   10.109.12.50     <none>        8443/TCP            28m
rook-ceph-mon-a            ClusterIP   10.107.127.2     <none>        6789/TCP,3300/TCP   34m
rook-ceph-mon-b            ClusterIP   10.102.56.72     <none>        6789/TCP,3300/TCP   34m
rook-ceph-mon-d            ClusterIP   10.105.17.32     <none>        6789/TCP,3300/TCP   31m

利用ingress把dashboard服务暴露给外面主机访问:

#因为测试环境的ingress是在devops命名空间的,ingress跨namespace提供反向代理服务需要如下操作
#在devops下创建svc ,关联到rook-ceph下的rook-ceph-mgr-dashboard svc,如下:
[root@kubemaster01 ~]# cat rook-ceph/cephdashboard-rook-ceph-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: cephdashboard-rook-ceph
  namespace: devops
spec:
  type: ExternalName
  externalName: rook-ceph-mgr-dashboard.rook-ceph.svc.cluster.local

#在 devops 下创建ingres ,指向devops下svc,这样就可以访问rook-ceph下的rook-ceph-mgr-dashboard svc了
[root@kubemaster01 ~]# cat rook-ceph/cephdashboard-rook-ceph-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: cephdashboard
  namespace: devops
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  rules:
  - host: ceph.dashboard.com        #用域名比较好转发,在内网dns上添加一个解析到ingress的机器上就好
    http:
      paths:
      - path: /
        backend:
          serviceName: cephdashboard-rook-ceph
          servicePort: 8443

错误:这时通过浏览器访问提示502错误,通过查看ingress的日志提示拒绝连接,在k8s master节点上直接curl集群地址加端口号也是拒绝连接

[root@kubemaster01 ~]# kubectl logs svc/proxy-ingress-nginx-controller -n devops
[root@kubemaster01 ~]# curl https://10.109.12.50:8443

解决:进行到rook-ceph的toolbox pod内

#查看一下mgr的dashboard模块有没有启用:
[root@rook-ceph-tools-6b4889fdfd-zqdqm /]# ceph mgr module ls|grep -A 5 enabled_modules
    "enabled_modules": [
        "dashboard",
        "iostat",
        "prometheus",
        "restful"
    ],
#已启用,再查看一下mgr的服务,发现没有dashboard
[root@rook-ceph-tools-6b4889fdfd-zqdqm /]# ceph mgr services
{
    "prometheus": "http://172.16.254.152:9283/"
}
#默认情况下,与仪表板的所有HTTP连接均使用SSL/TLS保护。为了使仪表板快速启动并运行,您可以使用以下内置命令生成并安装自签名证书:
[root@rook-ceph-tools-6b4889fdfd-zqdqm /]# ceph dashboard create-self-signed-cert
#过一会再查看mgr的服务,如下:
[root@rook-ceph-tools-6b4889fdfd-zqdqm /]# ceph mgr services
{
    "dashboard": "https://rook-ceph-mgr-a-6f4465c675-qhjxm:8443/",
    "prometheus": "http://172.16.254.152:9283/"
}

这时,再在浏览器上输入网址:https://ceph.dashboard.com , 可以跳转到登录页面了,密码获取在k8s master节点输入:

[root@kubemaster01 ~]# kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
文档更新时间: 2020-12-09 17:47   作者:子木