Kubernetes 安装 rook ceph
本文以 Debian 10 , kubernetes 1.19 为例。 kubernetes 安装参考站内另一篇文章
Kubernetes 安装
参考资料:
由于实验环境中没有足够的空闲磁盘空间,最终实验未完成。这里仅记录前面的实验步骤,作为备忘笔记,最终过程待补充。
前置条件
需要有未格式化的硬盘,或者未格式化的分区,或者有 block 模式的 PV。
前置条件
1. 下载 rook 仓库 (选做)
1
| git clone --single-branch --branch release-1.4 https://github.com/rook/rook.git
|
这里也可以不下载,主要是需要它仓库里定义好的几个 yaml 文件。
2. 启动 ceph
1
2
3
4
5
| 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 启动成功
参考
Rook Ceph Toolbox
创建文件 toolbox.yaml
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
50
51
52
53
54
| 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
|
启动
1
| kubectl create -f toolbox.yaml
|
3.2 查看 ceph 状态
在确保 toolbox 启动成功后,运行以下命令进入容器
1
| 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 启动成功
1
2
3
4
5
6
7
8
9
10
| $ 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
未实现,待补充。
最后: 卸载
按安装顺序的逆序进行删除即可
1
2
3
4
5
| cd rook/cluster/examples/kubernetes/ceph
kubectl delete -f cluster.yaml
kubectl delete -f operator.yaml
kubectl delete -f common.yaml
|