Kubernetes 安装 rook ceph
本文以 Debian 10 , kubernetes 1.19 为例。 kubernetes 安装参考站内另一篇文章 Kubernetes 安装
参考资料:
- 官方文档: Ceph Storage Quickstart
- Ceph-Toolbox: Rook Ceph Toolbox
由于实验环境中没有足够的空闲磁盘空间,最终实验未完成。这里仅记录前面的实验步骤,作为备忘笔记,最终过程待补充。
前置条件
需要有未格式化的硬盘,或者未格式化的分区,或者有 block 模式的 PV。 前置条件
1. 下载 rook 仓库 (选做)
git clone --single-branch --branch release-1.4 https://github.com/rook/rook.git
这里也可以不下载,主要是需要它仓库里定义好的几个 yaml 文件。
2. 启动 ceph
cd rook/cluster/examples/kubernetes/ceph kubectl create -f common.yaml kubectl create -f operator.yaml kubectl create -f cluster.yaml
其中
common.yaml
定义通用配置operator.yaml
负责启动rook-ceph-operator
。需要先确定rook-ceph-operator
启动完成后再进行下一步。cluster.yaml
会启动 ceph 的关键组件,如rook-ceph-mgr
,rook-ceph-mon
,rook-ceph-osd
等。
3. 验证 ceph 启动成功
3.1 创建 ceph-toolbox 应用
创建文件 toolbox.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: rook-ceph-tools namespace: rook-ceph labels: app: rook-ceph-tools spec: replicas: 1 selector: matchLabels: app: rook-ceph-tools template: metadata: labels: app: rook-ceph-tools spec: dnsPolicy: ClusterFirstWithHostNet containers: - name: rook-ceph-tools image: rook/ceph:v1.4.6 command: ["/tini"] args: ["-g", "--", "/usr/local/bin/toolbox.sh"] imagePullPolicy: IfNotPresent env: - name: ROOK_CEPH_USERNAME valueFrom: secretKeyRef: name: rook-ceph-mon key: ceph-username - name: ROOK_CEPH_SECRET valueFrom: secretKeyRef: name: rook-ceph-mon key: ceph-secret volumeMounts: - mountPath: /etc/ceph name: ceph-config - name: mon-endpoint-volume mountPath: /etc/rook volumes: - name: mon-endpoint-volume configMap: name: rook-ceph-mon-endpoints items: - key: data path: mon-endpoints - name: ceph-config emptyDir: {} tolerations: - key: "node.kubernetes.io/unreachable" operator: "Exists" effect: "NoExecute" tolerationSeconds: 5
启动
kubectl create -f toolbox.yaml
3.2 查看 ceph 状态
在确保 toolbox 启动成功后,运行以下命令进入容器
kubectl -n rook-ceph exec -it $(kubectl -n rook-ceph get pod -l "app=rook-ceph-tools" -o jsonpath='{.items[0].metadata.name}') -- bash
并在容器内执行 ceph status
命令,如果返回类似以下结果(HEALTH_OK)的话,则 ceph 启动成功
$ 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) ...
2020-10-22:由于没有空闲磁盘,rook-ceph-mon 和 rook-ceph-osd 服务都未启动成功,ceph status 报找不到服务。后续步骤无法继续。
4. 打开 Ceph Dashboard
未实现,待补充。
最后: 卸载
按安装顺序的逆序进行删除即可
cd rook/cluster/examples/kubernetes/ceph kubectl delete -f cluster.yaml kubectl delete -f operator.yaml kubectl delete -f common.yaml