# Ceph块存储对接K8S

对接Ceph块存储到Kubernetes(K8S)是一个常见的场景,通过这种方式可以实现对持久化存储的管理和使用。在这篇文章中,我们将介绍如何将Ceph块存储对接到K8S,以及每一步需要做什么。

## 流程概览

下表展示了整个对接Ceph块存储到K8S的流程:

| 步骤 | 操作 |
|-------|---------|
| 步骤一 | 在Ceph集群中创建存储池 |
| 步骤二 | 在K8S中创建StorageClass |
| 步骤三 | 创建PersistentVolumeClaim(PVC)|
| 步骤四 | 创建Pod并使用PVC |


## 详细步骤

### 步骤一:在Ceph集群中创建存储池

在Ceph集群中创建一个存储池,用于存储Pod的数据。可以使用如下的命令:

```bash
ceph osd pool create k8s-pool 128 128
```

### 步骤二:在K8S中创建StorageClass

在K8S中定义一个StorageClass,用于定义存储的类型和属性。可以使用如下的yaml文件:

```yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ceph-storage-class
provisioner: ceph.rook.io/block
parameters:
pool: k8s-pool
```

### 步骤三:创建PersistentVolumeClaim(PVC)

在K8S中创建一个PersistentVolumeClaim,用于申请存储空间。可以使用如下的yaml文件:

```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: ceph-storage-class
resources:
requests:
storage: 1Gi
```

### 步骤四:创建Pod并使用PVC

最后,在K8S中创建一个Pod,并将PVC挂载到Pod中以使用存储空间。可以使用如下的yaml文件:

```yaml
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
volumeMounts:
- mountPath: /data
name: my-volume
volumes:
- name: my-volume
persistentVolumeClaim:
claimName: my-pvc
```

通过以上步骤,我们成功实现了将Ceph块存储对接到K8S的过程。从创建存储池到在Pod中使用存储空间,每一步都能够让我们更好地管理和使用持久化存储。希望这篇文章能够帮助你理解并实践Ceph块存储对接K8S的过程。