Kubernetes(简称K8S)是一个开源的容器编排引擎,用于自动化部署、扩展和管理容器化应用程序。在K8S中,固定存储是一种可以在集群节点之间共享和访问的持久化存储,可以帮助应用程序在节点重启或迁移时保留数据。

下面我们来详细介绍如何在Kubernetes中实现固定存储,以便帮助刚入行的小白理解和使用。

### 实现K8S固定存储的流程及步骤

#### 步骤概览

| 步骤 | 操作 |
|------|------|
| 1 | 创建持久卷(Persistent Volume) |
| 2 | 创建持久卷声明(Persistent Volume Claim) |
| 3 | 将PV和PVC绑定 |
| 4 | 创建Pod并使用PVC |

#### Step 1:创建持久卷(Persistent Volume)

首先我们需要定义一个持久卷,以供后续的持久卷声明使用。在创建持久卷时,我们需要指定存储类型、存储容量、访问模式等信息。

```yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
storageClassName: my-storage-class
hostPath:
path: /data
```

以上代码中,我们定义了一个名为`my-pv`的持久卷,使用了1GB的存储容量,并指定了`ReadWriteOnce`的访问模式,采用`Recycle`的回收策略,并将路径`/data`导出为持久卷。

#### Step 2:创建持久卷声明(Persistent Volume Claim)

接下来,我们需要创建一个持久卷声明,用于向Kubernetes集群申请特定容量和访问模式的持久卷。

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

在上述代码中,我们定义了一个名为`my-pvc`的持久卷声明,请求1GB的存储容量,并指定了`ReadWriteOnce`的访问模式,使用了之前定义的名为`my-storage-class`的存储类。

#### Step 3:将PV和PVC绑定

在Kubernetes中,持久卷(PV)和持久卷声明(PVC)需要进行绑定操作,以确保PVC获得所需的PV。

```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
volumeName: my-pv
```

在上述代码中,我们通过指定`volumeName`将`my-pv`持久卷与`my-pvc`持久卷声明绑定在一起。

#### Step 4:创建Pod并使用PVC

最后,我们通过创建Pod来使用PVC中定义的持久卷。

```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
```

在上述代码中,我们创建了一个名为`my-pod`的Pod,并指定了使用`my-pvc`持久卷声明所申请的持久卷。Pod中的容器可以通过`/data`路径访问这个持久卷。

通过以上步骤,我们就成功实现了在Kubernetes集群中使用固定存储的过程。希望这篇文章对刚入行的小白有所帮助,让他们能够更好地理解和应用Kubernetes中的固定存储功能。