kubernetes - 能够使基本的 Rook/Ceph 示例正常工作,但所有数据显然都位于单个节点上
问题描述
使用 Rook 0.9.3,我能够在三节点 Kubernetes 集群(1 个 master,2 个 worker)上为 MySQL 数据库创建一个基于 Ceph 的目录,如下所示:
kubectl create -f cluster/examples/kubernetes/ceph/operator.yaml
kubeclt create -f cluster/examples/kubernetes/ceph/cluster.yaml
vim cluster/examples/kubernetes/ceph/storageclass.yaml # change xfs to ext4
kubectl create -f cluster/examples/kubernetes/ceph/storageclass.yaml
kubectl create -f cluster/examples/kubernetes/mysql.yaml
当我现在bash
进入吊舱时wordpress-mysql-*
,我可以看到它/var/lib/mysql
是从/dev/rbd1
. 如果我在此目录中创建一个随机文件,然后删除该 pod,则该文件会在该 pod 的新实例出现时保留。
/var/lib/rook
我的第一个工作人员在:中包含这些目录mon-a
mon-c
mon-d
osd0
rook-ceph
。我的第二个工作人员在/var/lib/rook
:中只包含一个目录mon-b
。这个和其他证据(来自df
)表明 Rook(以及扩展名为 Ceph)将其所有文件数据(例如,构成已挂载的所有块)存储/var/lib/mysql
在 中/var/lib/rook/osd0
,即在单个节点上存储一次。
我本来希望块分布在多个节点上,这样当一个节点(在我的例子中是第一个工作人员)发生故障时,数据访问仍然可用。这是一种天真的期望吗?如果没有,我该如何相应地配置 Rook?此外,我在两个工作节点上都有第二个未格式化的磁盘,我希望 Rook/Ceph 使用这些磁盘。如何实现?
解决方案
要使用其他分区作为 osd,您应该更改 cluster.yml 并添加
nodes:
- name: "kube-node1"
devices:
- name: "sdb"
- name: "kube-node2"
devices:
- name: "sdb"
- name: "kube-node3"
devices:
- name: "sdb"
推荐阅读
- python - 全屏tkinter画布python
- node.js - 在 Node 14 中使用 sequelize-cli,类型为:module
- android - appbundle 和 split 在启动 android flutter 时崩溃
- python - 创建一个动态变量并在 python (tkinter) 中进一步使用它
- javascript - 如何正确设置带有 React Context 的 Axios 拦截器?
- reactjs - 如何在多个视图中处理突变后的缓存更新?
- r - 如何将一些数据附加到现有的 xlsx 工作表 R 中?
- saxon - 如何下载/查找 .NET 的 Saxon 示例/cs
- encoding - 将 Spotify URI 编码为 Spotify 代码
- django - Django模型记录来自书店网站的两个不同应用程序的交易