美文网首页
使用Rook搭建Ceph集群

使用Rook搭建Ceph集群

作者: 野生DBNull | 来源:发表于2020-04-08 15:28 被阅读0次

    本文引用自 阳明的博客

    Rook 是一个开源的云原生存储编排工具,提供平台、框架和对各种存储解决方案的支持,以和云原生环境进行本地集成。

    Rook 将存储软件转变成自我管理、自我扩展和自我修复的存储服务,通过自动化部署、启动、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理来实现。Rook 底层使用云原生容器管理、调度和编排平台提供的能力来提供这些功能。

    Rook 利用扩展功能将其深度集成到云原生环境中,并为调度、生命周期管理、资源管理、安全性、监控等提供了无缝的体验。有关 Rook 当前支持的存储解决方案的状态的更多详细信息,可以参考 Rook 仓库 的项目介绍。不过目前 Rook 已经很好地提供了对 Ceph 的支持,本文简单为大家介绍如何使用 Rook 来快速搭建 Ceph 集群。

    部署 Rook Operator

    作者踩过的坑,在参考本教程的时候一定要看官方文档中的各个版本的先决条件每个版本有不同的先决条件,如:
    如果你部署release-1.1 你需要你的K8s集群至少有3个Node节点。
    如果你部署release-1.3 你还需要在做系统的时候预留出单独的盘。
    PS:我建议你安装release-1.1 的版本,这个版本不会出现太多奇奇怪怪的问题。

    这里部署 release-1.1 版本的 Rook,点击查看部署使用的 部署清单文件

    PS:一定要看准了 分支版本是release-1.1

    从上面链接中下载 common.yaml 与 operator.yaml 两个资源清单文件:

    $ kubectl apply -f common.yaml
    $ kubectl apply -f operator.yaml
    

    在继续操作之前,验证 rook-ceph-operator 是否处于“Running”状态:


    image.png

    这两个组件应该是Running的状态,外网拉取这个镜像会比较慢,耐心等等

    创建 Rook Ceph 集群

    现在 Rook Operator 处于 Running 状态,接下来我们就可以创建 Ceph 集群了。为了使集群在重启后不受影响,请确保设置的 dataDirHostPath 属性值为有效得主机路径。更多相关设置,可以查看集群配置相关文档

    创建如下的资源清单文件:(cluster.yaml)
    (PS:这个地方分为生产环境和测试环境,不同的环境在Rook的Github上都有相当应的版本文件)

    image.png
    注意:dataDirHostPath 这个值一定要设置 不然这玩意在重启集群的时候可能拉不起来
    apiVersion: ceph.rook.io/v1
    kind: CephCluster
    metadata:
      name: rook-ceph
      namespace: rook-ceph
    spec:
      cephVersion:
        # 最新得 ceph 镜像, 可以查看 https://hub.docker.com/r/ceph/ceph/tags
        image: ceph/ceph:v14.2.4-20190917
      dataDirHostPath: /data/rook  # 主机有效目录
      mon:
        count: 3
      dashboard:
        enabled: true
      storage:
        useAllNodes: true
        useAllDevices: false
        # 重要: Directories 应该只在预生产环境中使用
        directories:
        - path: /var/lib/rook
    

    等一会儿后应该能看到一堆的Pod整体的情况应该是这样的

    image.png

    安装 Ceph Dashboard

    执行如下的yaml就可以将Dashboard外放出来,这里需要注意在部署cluster.yaml的时候 dashboard.enabled 一定要设置为 true

     dashboard:
        enabled: true
    
    apiVersion: v1
    kind: Service
    metadata:
      name: rook-ceph-mgr-dashboard-external
      namespace: rook-ceph
      labels:
        app: rook-ceph-mgr
        rook_cluster: rook-ceph
    spec:
      ports:
      - name: dashboard
        port: 7000
        protocol: TCP
        targetPort: 7000
        nodePort: 30000
      selector:
        app: rook-ceph-mgr
        rook_cluster: rook-ceph
      type: NodePort
    

    然后我们就可以通过 http://<NodeIp>:30000 就可以访问到 Dashboard 了。


    image.png

    这里的密码可以在密文中找到


    image.png
    $ kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
    xxxx(登录密码)
    

    存储

    对于 Rook 暴露的三种存储类型可以查看对应的文档:

    • 块存储:创建一个 Pod 使用的块存储
    • 对象存储:创建一个在 Kubernetes 集群内部和外部都可以访问的对象存储
    • 共享文件系统:创建要在多个 Pod 之间共享的文件系统

    相关文章

      网友评论

          本文标题:使用Rook搭建Ceph集群

          本文链接:https://www.haomeiwen.com/subject/utktmhtx.html