public:kubernetes:rook_ceph

Kubernetes 安装 rook ceph

本文以 Debian 10 , kubernetes 1.19 为例。 kubernetes 安装参考站内另一篇文章 Kubernetes 安装

参考资料:

由于实验环境中没有足够的空闲磁盘空间,最终实验未完成。这里仅记录前面的实验步骤,作为备忘笔记,最终过程待补充。

需要有未格式化的硬盘,或者未格式化的分区,或者有 block 模式的 PV。 前置条件

git clone --single-branch --branch release-1.4 https://github.com/rook/rook.git

这里也可以不下载,主要是需要它仓库里定义好的几个 yaml 文件。

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 等。

创建文件 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

在确保 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 报找不到服务。后续步骤无法继续。

未实现,待补充。

按安装顺序的逆序进行删除即可

cd rook/cluster/examples/kubernetes/ceph
 
kubectl delete -f cluster.yaml
kubectl delete -f operator.yaml
kubectl delete -f common.yaml
  • 最后更改: 2021/06/24 20:48
  • 由 Jinkin Liu