Ceph 存储快速入门
本指南将引导您完成 Ceph 集群的基本设置,并使您能够使用集群中运行的其他 pod 中的块、对象和文件存储。
最低版本要求
Rook 支持Kubernetes v1.11或更高版本。
重要如果您使用的是 K8s 1.15 或更早版本,则需要创建不同版本的 Rook CRD。创建在示例清单crds.yaml的pre-k8s-1.16子文件夹中找到的。
先决条件
为确保您有一个准备就绪的 Kubernetes 集群Rook,您可以按照这些说明进行操作。
为了配置 Ceph 存储集群,至少需要以下本地存储选项之一:
- 原始设备(无分区或格式化文件系统)
- 原始分区(无格式化文件系统)
- block模式下存储类可用的 PV
您可以使用以下命令确认您的分区或设备是否已格式化文件系统。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 1f217d3f-0d23-4197-8e46-9b244c7248b0 /boot
└─sda2 LVM2_me UQBPo0-QUHf-pqol-jPxe-qmCb-7w3A-Vkjt5W
├─centos-root
xfs 6e898e38-72d5-4a8d-a04c-d7781e8f35cc /
└─centos-swap
swap 4201613d-0c30-47c5-960b-6dbabaa51f0f
sdb
sr0 iso9660 CentOS 7 x86_64
2019-09-11-19-02-53-00
如果该FSTYPE字段不为空,则在相应设备的顶部有一个文件系统。在这种情况下,您可以将 vdb 用于 Ceph,而不能使用 vda 及其分区。
一言以蔽之
如果您感到幸运,可以使用以下 kubectl 命令和示例 yaml 文件创建一个简单的 Rook 集群。有关更详细的安装,请跳到下一部分以部署 Rook 运算符。
$ git clone --single-branch --branch v1.6.7 https://github.com/rook/rook.git
cd rook/cluster/examples/kubernetes/ceph
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
kubectl create -f cluster.yaml
集群运行后,您可以创建块、对象或文件存储以供集群中的其他应用程序使用。
集群环境
Rook 文档侧重于在生产环境中启动 Rook。还提供了一些示例来放宽测试环境的一些设置。在本指南后面创建集群时,请考虑以下示例集群清单:
- cluster.yaml:在裸机上运行的生产集群的集群设置。至少需要三个工作节点。
- cluster-on-pvc.yaml:在动态云环境中运行的生产集群的集群设置。
- cluster-test.yaml:测试环境(如 minikube)的集群设置。
有关更多详细信息,请参阅Ceph 示例。
部署 Rook Operator
第一步是部署 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
您还可以使用Rook Helm Chart部署操作员。
在生产中启动 Operator 之前,您可能需要考虑一些设置:
- 如果您使用的是 kubernetes v1.15 或更早版本,则需要在此处创建 CRD /cluster/examples/kubernetes/ceph/pre-k8s-1.16/crd.yaml。CustomResourceDefinition 的 apiextension v1beta1 版本在 Kubernetes v1.16 中已弃用。
- 考虑是否要启用默认禁用的某些 Rook 功能。有关这些和其他高级设置,请参阅operator.yaml。
- 设备发现:如果ROOK_ENABLE_DISCOVERY_DAEMON启用该设置,Rook 将监视要配置的新设备,常用于裸机集群。
- Flex 驱动程序:不推荐使用 Flex 驱动程序以支持 CSI 驱动程序,但仍然可以通过ROOK_ENABLE_FLEX_DRIVER设置启用。
- 节点关联性和容忍度:默认情况下,CSI 驱动程序将在集群中的任何节点上运行。要配置 CSI 驱动程序关联性,可以使用多种设置。
如果您希望部署到 default 以外的命名空间rook-ceph,请参阅有关该主题的 Ceph 高级配置部分。
创建 Rook Ceph 集群
现在 Rook 操作符正在运行,我们可以创建 Ceph 集群。为了使集群在重启后继续存在,请确保设置dataDirHostPath对您的主机有效的属性。有关更多设置,请参阅有关配置集群的文档。
创建集群:
kubectl create -f cluster.yaml
使用kubectl到列表荚的rook-ceph命名空间。一旦它们全部运行,您应该能够看到以下 pod。osd pod 的数量将取决于集群中的节点数量和配置的设备数量。如果cluster.yaml上面没有修改,预计每个节点会创建一个OSD。CSI、rook-ceph-agent(flex 驱动程序)和rook-discoverpods 也是可选的,具体取决于您的设置。
如果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 工具箱并运行该 ceph status命令。
- 所有 mons 都应达到法定人数
- 经理应该是活跃的
- 至少有一个 OSD 处于活动状态
- 如果运行状况不正常HEALTH_OK,则应调查警告或错误。
ceph status
cluster: id: a0452c76-30d9-4c1a-a948-5d8405f19a7c health: HEALTH_OK services: mon: 3 daemons, quorum a,b,c (age 3m) mgr: a(active, since 2m) osd: 3 osds: 3 up (since 1m), 3 in (since 1m) …
如果集群不健康,请参阅Ceph 常见问题以获取更多详细信息和可能的解决方案。
贮存
有关 Rook 公开的三种存储类型的演练,请参阅以下指南:
- Block:创建由 Pod 使用的块存储
- Object:创建一个可以在 Kubernetes 集群内部或外部访问的对象存储
- 共享文件系统:创建一个跨多个 pod 共享的文件系统
Ceph 仪表板
Ceph 有一个仪表板,您可以在其中查看集群的状态。有关更多详细信息,请参阅仪表板指南。工具
我们创建了一个工具箱容器,其中包含用于调试和排除 Rook 集群故障的全套 Ceph 客户端。有关设置和使用信息,请参阅工具箱自述文件。另请参阅我们的高级配置文档以获取有用的维护和调整示例。监控
每个 Rook 集群都有一些内置的指标收集器/导出器,用于使用Prometheus进行监控。要了解如何为 Rook 集群设置监控,您可以按照监控指南中的步骤操作。拆除
完成测试集群后,请参阅这些说明以清理集群。