在 Kubernetes 中部署 Ceph

概述

在 Kubernetes 中部署 Ceph 是一项复杂的任务,但是通过以下步骤,你可以成功实现它。本文将为你提供一个详细的指南,让你能够快速上手。

流程

下面是在 Kubernetes 中部署 Ceph 的整体流程,我们将通过一个表格来展示这些步骤:

步骤 描述
步骤 1 安装 Ceph Operator
步骤 2 创建 Ceph 集群
步骤 3 部署 Rook
步骤 4 部署 Ceph 存储类
步骤 5 部署 Ceph 文件系统

接下来,我们将逐步介绍每个步骤所需的操作和代码。

步骤 1: 安装 Ceph Operator

在 Kubernetes 中部署 Ceph,你首先需要安装 Ceph Operator。Ceph Operator 是一个 Kubernetes 控制器,用于管理 Ceph 集群的生命周期。

以下是安装 Ceph Operator 的步骤:

  1. 添加 Ceph Helm 存储库:
helm repo add rook-release 
  1. 创建一个名为 rook-ceph 的命名空间:
kubectl create namespace rook-ceph
  1. 安装 Ceph Operator:
helm install --namespace rook-ceph rook-ceph rook-release/rook-ceph --version v1.5.2

步骤 2: 创建 Ceph 集群

在部署 Rook 之前,你需要为 Ceph 创建一个集群。以下是创建 Ceph 集群的步骤:

  1. 创建一个名为 cluster.yaml 的 YAML 文件,并添加以下内容:
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
  name: rook-ceph
  namespace: rook-ceph
spec:
  cephVersion:
    image: ceph/ceph:v14.2.20
    allowUnsupported: false
  dataDirHostPath: /var/lib/rook
  mon:
    count: 3
    allowMultiplePerNode: false
  dashboard:
    enabled: true
  1. 使用以下命令创建 Ceph 集群:
kubectl apply -f cluster.yaml

步骤 3: 部署 Rook

在部署 Rook 之前,你需要等待 Ceph 集群完全启动。然后,你可以按照以下步骤部署 Rook:

  1. 创建 toolbox.yaml 文件,并添加以下内容:
apiVersion: v1
kind: Pod
metadata:
  name: rook-ceph-tools
  namespace: rook-ceph
spec:
  containers:
  - name: rook-ceph-tools
    image: ceph/ceph:v14.2.20
    command: ["/tini"]
    args: ["-g", "--", "/usr/local/bin/toolbox.sh"]
    env:
    - name: ROOK_CEPH_STATUS_COMMAND
      value: /usr/local/bin/ceph status
    - name: ROOK_CEPH_MON_COMMAND
      value: /usr/local/bin/ceph mon stat
    - name: ROOK_CEPH_TOOLBOX_ROOK_NAMESPACE
      valueFrom:
        fieldRef:
          fieldPath: metadata.namespace
    - name: ROOK_CEPH_TOOLBOX_CLUSTER_NAME
      value: rook-ceph
    volumeMounts:
    - mountPath: /etc/ceph
      name: ceph-config
    - mountPath: /var/lib/rook
      name: rook-ceph-data
  volumes:
  - name: ceph-config
    emptyDir: {}
  - name: rook-ceph-data
    emptyDir: {}
  1. 使用以下命令创建 Rook 工具箱:
kubectl apply -f toolbox.yaml

步骤 4: 部署 Ceph 存储类

在部署 Ceph 存储类之前,你需要将 Rook 工具箱连接到 Ceph 集群。请按照以下步骤进行操作:

  1. 进入 Rook 工具箱的 Shell:
kubectl -n rook-ceph exec -it rook-ceph-tools -- bash

2