能够使基本的Rook / Ceph示例工作,但所有数据显然都位于单个节点上

问题描述 投票:2回答:1

使用Rook 0.9.3我能够在三节点Kubernetes集群(1个主服务器,两个工作服务器)上为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进入pod wordpress-mysql-*我可以看到/var/lib/mysql是从/dev/rbd1安装。如果我在此目录中创建一个随机文件,然后删除该窗格,则当一个新的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的所有块),即在单个节点上存储一次。

我原本期望块分布在多个节点上,这样当一个节点(在我的情况下是第一个worker)发生故障时,数据访问仍然可用。这是一种天真的期望吗?如果没有,我如何相应配置Rook?另外,我在两个工作节点上都有第二个未格式化的磁盘,我更希望Rook / Ceph使用它们。如何实现这一目标?

kubernetes ceph rook
1个回答
1
投票

要将其他分区用作osd,您应该更改cluster.yml并添加

nodes:
- name: "kube-node1"
  devices:
  - name: "sdb"
- name: "kube-node2"
  devices:
  - name: "sdb"
- name: "kube-node3"
  devices:
  - name: "sdb"
© www.soinside.com 2019 - 2024. All rights reserved.