zoukankan      html  css  js  c++  java
  • k8s集群中部署RookCeph高可用集群

    先决条件

    为确保您有一个准备就绪的 Kubernetes 集群Rook,您可以按照这些说明进行操作。

    为了配置 Ceph 存储集群,至少需要以下本地存储选项之一:

    • 原始设备(无分区或格式化文件系统)
      • 这需要lvm2在主机上安装。为了避免这种依赖性,您可以在磁盘上创建一个完整的磁盘分区(见下文)
    • 原始分区(无格式化的文件系统)
    • block模式下存储类可用的持久卷

    部署 Rook Operator

    $ git clone --single-branch --branch release-1.7 https://gitee.com/Aaron-23/rook.git
    cd rook/cluster/examples/kubernetes/ceph
    

    第一步是部署 Rook 算子。检查您是否正在使用与您的 Rook 版本相对应的示例 yaml 文件。有关更多选项,请参阅示例文档。

    cd cluster/examples/kubernetes/ceph
    kubectl create -f crds.yaml -f common.yaml -f operator.yaml
    
    # verify the rook-ceph-operator is in the `Running` state before proceeding
    kubectl -n rook-ceph get pod
    

    修改cluster.yaml文件中storage.node的相关信息,至少需要三个节点

    kubectl create -f cluster.yaml
    

    使用kubectl到列表荚的rook-ceph命名空间。一旦它们全部运行,您应该能够看到以下 pod。osd pod 的数量取决于集群中的节点数量和配置的设备数量。如果cluster.yaml上面没有修改,预计每个节点会创建一个OSD。

    如果rook-ceph-mon,rook-ceph-mgr或rook-ceph-osd不创建豆荚,请参阅 Ceph的常见问题的详细信息和可能的解决方案。

    $ kubectl -n rook-ceph get pod
    NAME                                                 READY   STATUS      RESTARTS   AGE
    csi-cephfsplugin-provisioner-d77bb49c6-n5tgs         5/5     Running     0          140s
    csi-cephfsplugin-provisioner-d77bb49c6-v9rvn         5/5     Running     0          140s
    csi-cephfsplugin-rthrp                               3/3     Running     0          140s
    csi-rbdplugin-hbsm7                                  3/3     Running     0          140s
    csi-rbdplugin-provisioner-5b5cd64fd-nvk6c            6/6     Running     0          140s
    csi-rbdplugin-provisioner-5b5cd64fd-q7bxl            6/6     Running     0          140s
    rook-ceph-crashcollector-minikube-5b57b7c5d4-hfldl   1/1     Running     0          105s
    rook-ceph-mgr-a-64cd7cdf54-j8b5p                     1/1     Running     0          77s
    rook-ceph-mon-a-694bb7987d-fp9w7                     1/1     Running     0          105s
    rook-ceph-mon-b-856fdd5cb9-5h2qk                     1/1     Running     0          94s
    rook-ceph-mon-c-57545897fc-j576h                     1/1     Running     0          85s
    rook-ceph-operator-85f5b946bd-s8grz                  1/1     Running     0          92m
    rook-ceph-osd-0-6bb747b6c5-lnvb6                     1/1     Running     0          23s
    rook-ceph-osd-1-7f67f9646d-44p7v                     1/1     Running     0          24s
    rook-ceph-osd-2-6cd4b776ff-v4d68                     1/1     Running     0          25s
    rook-ceph-osd-prepare-node1-vx2rz                    0/2     Completed   0          60s
    rook-ceph-osd-prepare-node2-ab3fd                    0/2     Completed   0          60s
    rook-ceph-osd-prepare-node3-w4xyz                    0/2     Completed   0          60s
    

    验证集群是否处于健康状态

    使用Rook tools并运行该 ceph status命令。

    kubectl create -f toolbox.yaml
    kubectl -n rook-ceph rollout status deploy/rook-ceph-tools
    
    $ kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash
    $ ceph status
    [root@rook-ceph-tools-7869bc54f6-67rvk /]# ceph status
      cluster:
        id:     1f70694e-df88-4a1f-b77e-d2dd0ded9977
        health: HEALTH_OK
    
      services:
        mon: 3 daemons, quorum a,b,c (age 23h)
        mgr: a(active, since 20h), standbys: b
        mds: 1/1 daemons up, 1 hot standby
        osd: 3 osds: 3 up (since 20h), 3 in (since 20h)
    
      data:
        volumes: 1/1 healthy
        pools:   3 pools, 192 pgs
        objects: 25 objects, 50 KiB
        usage:   107 MiB used, 300 GiB / 300 GiB avail
        pgs:     192 active+clean
    
      io:
        client:   1.2 KiB/s rd, 2 op/s rd, 0 op/s wr
    

    存储

    有关 Rook 公开的三种存储类型的演练,请参阅以下指南:

    Block:创建由 Pod (RWO) 使用的块存储
    共享文件系统:创建一个跨多个 Pod 共享的文件系统 (RWX)
    Object:创建一个可以在 Kubernetes 集群内部或外部访问的对象存储

    创建共享文件系统

    kubectl create -f filesystem.yaml
    

    Rook operator将创建启动服务所需的所有池和其他资源。这可能需要一分钟才能完成。

    # To confirm the filesystem is configured, wait for the mds pods to start
    kubectl -n rook-ceph get pod -l app=rook-ceph-mds
    NAME                                      READY     STATUS    RESTARTS   AGE
    rook-ceph-mds-myfs-7d59fdfcf4-h8kw9       1/1       Running   0          12s
    rook-ceph-mds-myfs-7d59fdfcf4-kgkjp       1/1       Running   0          12s
    

    要查看文件系统的详细状态,请启动并连接到Rook tools。将ceph status为该mds服务显示一个新行。在此示例中,有一个 MDS 的活动实例已启动,其中一个 MDS 实例处于standby-replay模式以备故障转移。

    $ ceph status
     ...
     services:
       mds: myfs-1/1/1 up {[myfs:0]=mzw58b=up:active}, 1 up:standby-replay
    

    供应存储

    在 Rook 开始供应存储之前,需要根据文件系统创建一个 StorageClass。这是 Kubernetes 与 CSI 驱动程序互操作以创建持久卷所必需的。

    注意:此示例使用 CSI 驱动程序,它是 K8s 1.13 和更新版本的首选驱动程序。示例可以在CSI CephFS目录中找到。有关使用 flex 驱动程序(K8s 1.12 及更早版本需要)的卷的示例,请参阅下面的Flex 驱动程序部分。

    kubectl create -f storageclass.yaml
    

    存储配额

    重要提示:CephFS CSI 驱动程序使用配额来强制执行请求的 PVC 大小。只有较新的内核支持 CephFS 配额(内核版本至少为 4.17)。如果您需要强制执行配额并且内核驱动程序不支持它,您可以禁用内核驱动程序并使用 FUSE 客户端。这可以通过CSI_FORCE_CEPHFS_KERNEL_CLIENT: false 在操作员部署 ( operator.yaml) 中设置来完成。但是,重要的是要知道,当 FUSE 客户端启用时,存在一个问题,即在升级过程中应用程序 pod 将与挂载断开连接,需要重新启动。有关 更多详细信息,请参阅升级指南。

    dashboard

    获取svc,在平台上代理

    kubectl -n rook-ceph get service rook-ceph-mgr-dashboard
    

    连接到仪表板后,您需要登录以进行安全访问。Rook 创建一个默认用户, admin并rook-ceph-dashboard-password在 Rook Ceph 集群运行的命名空间中生成一个名为的秘密。要检索生成的密码,您可以运行以下命令:

    kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
    
  • 相关阅读:
    WPS项目编号问题
    Allegro转换PADS终极篇(转载)
    Allegro16.3约束设置 (转载)
    转:浮点数在计算机中存储方式
    转:十进制小数转化为二进制小数
    变量的存储类别 内部函数和外部函数
    关于Nios II的启动分析(转载)
    Allegro学习(http://www.asmyword.com/forum.php?mod=forumdisplay&fid=86)
    cf1113 C. Sasha and a Bit of Relax
    D. Jongmah cf1110
  • 原文地址:https://www.cnblogs.com/wiseo/p/15573045.html
Copyright © 2011-2022 走看看