0. 安装 docker 和 docker-compose
安装 docker 请参考
安装 docker 和 k8s 相关命令行工具
同时参考 daocloud 上的 docker-compose 安装文档,可以使用下述语句安装 docker-compose:
1 2 3
| curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /tmp/docker-compose chmod +x /tmp/docker-compose sudo mv /tmp/docker-compose /usr/local/bin/docker-compose
|
1. 利用 docker-compose 部署单机单 osd ceph
主要参考官方 docker 镜像文档,但最新的 ceph/daemon
镜像似乎有点奇怪的 bug,导致 osd 起不来,因此,我们使用一个 2019年年初的镜像,已经 tag 成 huangwx/ceph-daemon
供使用。ceph 的 docker-compose 文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| version: '3.7' services: ceph-mon: image: huangwx/ceph-daemon network_mode: host privileged: true volumes: - ./ceph:/etc/ceph - cephdata:/var/lib/ceph container_name: ceph-mon command: - mon environment: - MON_IP=${MON_IP} - CEPH_PUBLIC_NETWORK=${CEPH_PUBLIC_NETWORK} ceph-mgr: image: huangwx/ceph-daemon network_mode: host privileged: true volumes: - ./ceph:/etc/ceph - cephdata:/var/lib/ceph container_name: ceph-mgr command: - mgr depends_on: - ceph-mon ceph-osd: image: huangwx/ceph-daemon network_mode: host privileged: true volumes: - ./ceph:/etc/ceph - cephdata:/var/lib/ceph container_name: ceph-osd command: - osd depends_on: - ceph-mgr environment: - OSD_TYPE=directory pid: host volumes: cephdata: {} networks: default: external: true name: host
|
在 docker-compose-ceph.yaml
的相同目录下新建一个 ceph
目录
注意设置 MON_IP
和 CEPH_PUBLIC_NETWORK
两个环境变量,两个环境变量分别为主机 IP 地址,允许访问 ceph 的网段。下面仅作为演示,MON_IP 和 CEPH_PUBLIC_NETWORK 请设置成你自己的:
1
| export MON_IP=192.168.2.2 CEPH_PUBLIC_NETWORK=192.168.0.0/16
|
同时请确认 ./ceph
目录下没有任何 ceph 的配置文件,然后启动 ceph:
1
| docker-compose -f docker-compose-ceph.yaml up -d
|
启动后会在 ./ceph
目录下生成下述3个 ceph 配置文件:
1 2 3
| ceph.client.admin.keyring ceph.conf ceph.mon.keyring
|
启动成功之后,稍等片刻,然后执行下述命令 check ceph 是否正常
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $ docker exec -it ceph-mon ceph -s cluster: id: e3cdecce-16f7-4c0f-9909-ab94a5e7c1b5 health: HEALTH_OK
services: mon: 1 daemons, quorum new mgr: new(active) osd: 1 osds: 1 up, 1 in
data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 2.9 GiB used, 1020 GiB / 1023 GiB avail pgs:
|
如果成功看到类似上述的返回,即说明成功。
2. 初始化 rbd 配置
接下来初始化 rbd 配置。由于是单 osd 单 monitor 集群,因此我们需要创建并设置 rbd:
1 2 3 4
| docker exec -it ceph-mon ceph osd pool create rbd 64 64 replicated docker exec -it ceph-mon ceph osd pool application enable rbd rbd docker exec -it ceph-mon rbd pool init rbd docker exec -it ceph-mon ceph osd pool set rbd size 1
|
即可成功初始化并设置 rbd,可以利用 rbd ls
命令 check 是否能够不卡住返回:
1
| docker exec -it ceph-mon rbd ls
|
如果能够成功不卡住返回空值,说明 rbd 集群正常,执行 ceph -s
可以看到初始化了 1 个 pool 和 64 个 pgs:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $ docker exec -it ceph-mon ceph -s cluster: id: e3cdecce-16f7-4c0f-9909-ab94a5e7c1b5 health: HEALTH_OK
services: mon: 1 daemons, quorum new mgr: new(active) osd: 1 osds: 1 up, 1 in
data: pools: 1 pools, 64 pgs objects: 0 objects, 0 B usage: 2.9 GiB used, 1020 GiB / 1023 GiB avail pgs: 64 active+clean
|