摘要:充当业务流程层,作为副本集进行部署和处理。 File 将存储软件转变为自我管理、自我扩展和自我修复的存储服务。 由于请求是针对使用文件系统格式化的卷,因此必须在所有节点上安装该工具。 如果未指定特定存储类别,您安装的应用程序将使用该类别进行数据存储。
作者:Earl C. Ruby III
我想在新的 Kubernetes 集群上安装 Prometheus 和 Grafana。包要工作,它需要一个地方来存储持久数据。 当我在 Seagate 担任云架构师时,我曾使用 Ceph 进行性能和规模测试,并且在过去的一年中一直在尝试 Rook,因此我安装了 Rook + Ceph 并将其用于 Kubernetes 集群中的数据存储。
Ceph是一个分布式存储系统,提供对象、文件和块存储。 每个存储节点都有一个Ceph存储对象的文件系统和一个Ceph OSD(对象存储守护进程)进程。 Ceph集群还有一个Ceph MON(监控)守护进程,确保Ceph集群的高可用性。
Rook充当Kubernetes中Ceph的业务流程层,将OSD和MON流程部署为POD副本集。 Rook 自述文件:
Rook 将存储软件转变为自我管理、自我扩展和自我修复的存储服务。 这是通过自动化部署、引导、准备、配置、扩展、升级、迁移、灾难恢复、监控和资源管理来实现的。 Rook 使用底层云原生容器管理、调度和编排平台提供的工具来履行其职责。https://github.com/rook/rook/...
当我们创建集群时,我们构建了一个带有 40 GB 硬盘的 VM,因此 5 使用 Kubernetes节点。 集群上提供大约 200 GB 的存储空间,其中大部分用于 Ceph。
安装 Rook+Ceph
安装 Rook+Ceph 非常简单。 在我的个人集群上,我按照以下步骤安装了 Rook+Ceph v0.9.0: git clone git@github.com:rook/rook.gitcd rookgit checkout v0.9.0cd cluster/examples/ kubernetes/cephkubectl create [k4 ]f Operator .yamlkubectl create -f cluster.yaml
Rook 将 POD 部署到两个命名空间中:rook-ceph-system 和 rook-ceph。 在我的集群上,POD 的部署、初始化和进入运行状态大约需要 2 分钟。 在等待一切完成的同时,检查 Pod 的状态。
$ kubectl -n rook-ceph-system get podNAME READY STATUS RESTARTS AGErook-ceph- ]agent -8tsq7 1/1 运行 0 2d20hrook[k4 ] ceph-agent-b6mgs 1/1 运行 0 2d20hrook-ceph-agent-nff8n 1/1 运行 0 2d20hrook-ceph-agent-vl4zf 1/ 1 运行 02d20hrook-ceph-agent-vtpbj 1/1 运行 0 2d20hrook-ceph-agent-xq5dv 1/1 运行 0 2d20hrook-ceph-操作员- 85d64cfb99[ k4]hrnbs 1/1 运行 0 2d20hrook-discover-9nqrp 1/1 运行 0 2d20hrook-discover-b62ds 1/1 运行 0 2d20hrook-discover-k77gw 1/1 运行 0 2d20hrook-discover-kqknr 1/1 运行 0 2d20hrook-discover-v2hhb 1/1 运行 0 2d20hrook-discover-wbkkq 1/1 运行 0 2d20h
$ kubectl -n rook-ceph 获取 podNAME就绪状态恢复 AGErook-ceph-mgr-a-7d884ddc8b-kfxt9 1/1 Running 0 2d20hrook-ceph-mon-a-77cbd865b8[ k4]ncg67 1/1 运行 0 2d20hrook-ceph-mon-b-7cd4b9774f-js8n9 1/1 运行 0 2d20hrook-ceph-mon-c[ k4]86778859c7[k4 ] ]x2qg9 1/1 运行 0 2d20hrook-ceph-osd-0-67fff79666-fcrss 1/1 运行 0 35hrook-ceph-osd -1- 58bd4ccbbf -lsxj9 1/1 运行 1 2d20hrook-ceph-osd-2-bf99864b5-n4q7v 1/1 运行 0 2d20hrook-ceph -osd-3[ k4] ]577466c968-j8gjr 1/1 运行 0 2d20hrook-ceph-osd-4-6856c5c6c9-92tb6 1/1 运行0 2d20hrook-ceph-osd-5-8669577f6b-zqrq9 1/1 运行 0 2d20hrook-ceph-osd-prepare-node1-xfbs7 0 / 2 已完成 0 2d20hrook-ceph-osd-prepare-node2-c9f55 0/2 已完成 0 2d20hrook-ceph-osd-prepare-node3- 5g4nc 0/2 已完成 0 2d20hrook-ceph-osd-prepare-node4-wj475 0/2 已完成 0 2d20hrook-ceph-osd-prepare-node5[ k4 ] ]tf5bt 0/2 Done 0 2d20h
最终任务
在安装 Prometheus 和 Grafana 之前,您还需要做两件事。
让 Rook 成为集群的默认存储提供程序。
Prometheus Helm 图表需要使用 XFS 文件系统格式化的卷,因此您必须在所有 Ubuntu Kubernetes 节点上安装 XFS 工具。 (Kubespray 默认情况下没有安装 XFS,但目前有一个 PR 解决了这个问题。)
要使 Rook 成为默认存储提供程序,只需运行我执行的 kubectl 命令即可。
库布ectl patch storageclass rook-ceph-block -p "{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"} }}"
这会更新 rook-ceph- 块存储类别,并使其成为集群上的默认存储类别。 如果您不指定具体的存储类别,您安装的应用程序将使用Rook+Ceph进行数据存储。
我正在使用 Kubespray 构建集群,而 Kubespray 使用 Ansible,因此在所有主机上安装 XFS 工具的最简单方法之一就是使用 Ansible。解决方案是使用“Run a single command on所有主机”功能。 :
p>
cd kubesprayexport ANSIBLE_REMOTE_USER=ansibleansible kube-node -i inventory/mycluster/hosts.ini --成为 --成为-用户 root -a " apt-get install -y xfsprogs"
现在 XFS 已安装,您可以使用 Helm 成功部署 Prometheus 和 Grafana。
helm install [ k4]- name prometheussteady/prometheushelm install --name grafanasteady/grafana
Rook for Prometheus 和 Grafana、Prometheus Server 和 Prometheus Alert Manager +用于安装 Ceph 的 Helm 图表(使用 XFS格式)创建持久存储卷。
Prometheus 仪表板
Grafana 仪表板
Prometheus 服务器的 Rook 持久存储
b>
我希望这会有所帮助。
评论前必须登录!
注册