Kubernetes (K8s) 是一个用于自动部署、扩展和管理容器化应用程序的开源平台,而 Rook 则是一个用于在 K8s 上运行 Ceph、NFS、EdgeFS 等存储系统的开源工具。本文将介绍如何在 Kubernetes 上使用 Rook 来实现存储系统的部署和管理。

整个过程可以分为以下步骤:

| 步骤 | 操作 |
|----|----|
| 1 | 部署 Rook Operator |
| 2 | 部署 Ceph 集群 |
| 3 | 使用 Ceph 存储 |

### 步骤一:部署 Rook Operator

1. 首先,需要创建 Rook 的命名空间 rook-ceph:

```bash
kubectl create namespace rook-ceph
```

2. 部署 Rook Operator:

```bash
kubectl apply -f https://raw.githubusercontent.com/rook/rook/release-1.8/cluster/examples/kubernetes/ceph/common.yaml
kubectl apply -f https://raw.githubusercontent.com/rook/rook/release-1.8/cluster/examples/kubernetes/ceph/operator.yaml
```

### 步骤二:部署 Ceph 集群

1. 创建 Ceph 集群的配置文件 cluster.yaml:

```yaml
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
name: rook-ceph
namespace: rook-ceph
spec:
dataDirHostPath: "/var/lib/rook"
mon:
count: 3
allowMultiplePerNode: false
dashboard:
enabled: false
```

2. 根据配置文件创建 Ceph 集群:

```bash
kubectl apply -f cluster.yaml
```

### 步骤三:使用 Ceph 存储

1. 创建 Ceph 存储类 storageclass.yaml:

```yaml
apiVersion: ceph.rook.io/v1
kind: CephBlockPool
metadata:
name: replicapool
namespace: rook-ceph
spec:
replicated:
size: 3
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: rook-ceph-block
provisioner: ceph.rook.io/block
parameters:
blockPool: replicapool
```

2. 根据配置文件创建存储类:

```bash
kubectl apply -f storageclass.yaml
```

通过以上步骤,你已经成功在 Kubernetes 上部署了 Rook Operator,并创建了一个 Ceph 集群。接下来,你可以使用这个 Ceph 存储来存储你的应用程序数据。

总结一下,通过部署 Rook Operator 和 Ceph 集群,我们可以在 Kubernetes 上使用 Rook 来实现存储系统的部署和管理。希望本文能够帮助你快速上手使用 K8s 上的 Rook,更好地管理你的存储资源。