在Kubernetes (K8S) 中使用Ceph 存储的过程并不复杂,下面我将具体介绍整个流程,并附上相应的代码示例,以帮助你快速上手。

### K8S使用Ceph原理

#### 步骤概述

| 步骤 | 操作 |
| ------ | ------ |
| 1 | 配置Ceph存储集群 |
| 2 | 安装Ceph CSI 驱动插件 |
| 3 | 创建 PersistentVolume 和 PersistentVolumeClaim |
| 4 | 部署应用并设置存储类 |
| 5 | 验证存储功能是否正常 |

#### 详细步骤及代码示例

##### 步骤 1:配置Ceph存储集群

首先,你需要先搭建一个Ceph存储集群,确保集群正常运行,并在K8S集群已经配置好Ceph的认证信息。

##### 步骤 2:安装Ceph CSI 驱动插件

```yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: csi-cephfs-sc
provisioner: csi.ceph.com
parameters:
clusterID:
pool:
```

##### 步骤 3:创建 PersistentVolume 和 PersistentVolumeClaim

创建一个 PersistentVolume,指定使用之前创建的存储类。

```yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: ceph-pv
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: csi-cephfs-sc
csi:
driver: cephfs.csi.ceph.com
volumeHandle:
```

然后创建 PersistentVolumeClaim,用于声明对应的存储卷。

```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ceph-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
storageClassName: csi-cephfs-sc
```

##### 步骤 4:部署应用并设置存储类

在部署应用时,需要设置好存储类,使其与之前创建的PV/PVC进行绑定。

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx
volumeMounts:
- name: my-volume
mountPath: /usr/share/nginx/html
volumes:
- name: my-volume
persistentVolumeClaim:
claimName: ceph-pvc
```

##### 步骤 5:验证存储功能是否正常

部署完应用后,可以访问应用并进行写入、读取操作,验证存储功能是否正常。

通过以上步骤,你就成功实现了在Kubernetes中使用Ceph存储的过程。希望这篇文章能够对你有所帮助,如果有任何问题欢迎随时提问!