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

时间:2019-04-18 11:15:52

标签: kubernetes ceph rook

使用Rook 0.9.3,我能够在三节点Kubernetes集群(一个主节点,两个工作节点)上为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使用它们。如何做到这一点?

1 个答案:

答案 0 :(得分:1)

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

nodes:
- name: "kube-node1"
  devices:
  - name: "sdb"
- name: "kube-node2"
  devices:
  - name: "sdb"
- name: "kube-node3"
  devices:
  - name: "sdb"