### 实现K8S PVC自动挂载的步骤:

| 步骤 | 操作 |
| ---- | ---- |
| 1 | 创建StorageClass |
| 2 | 创建PersistentVolumeClaim |
| 3 | 创建Pod |

#### 步骤一:创建StorageClass
在开始之前,我们首先需要创建一个 StorageClass 对象,它定义了 PV 的动态配置和管理策略。以下是创建一个名为 standard 的 StorageClass 的示例。

```yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
reclaimPolicy: Retain
```

- `name: standard`:StorageClass 的名称为 standard。
- `provisioner: kubernetes.io/aws-ebs`:指定存储提供者为 AWS 的 EBS。
- `parameters: type: gp2`:指定存储类型为 gp2。
- `reclaimPolicy: Retain`:指定当 PVC 被删除时,对应的 PV 不会被删除。

#### 步骤二:创建PersistentVolumeClaim
接下来,我们需要创建一个 PersistentVolumeClaim(PVC)对象,它用来请求一定大小和访问模式的存储。以下是创建一个名为 my-pvc 的 PVC 的示例。

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

- `name: my-pvc`:PVC 的名称为 my-pvc。
- `accessModes: ReadWriteOnce`:指定该 PVC 的访问模式为 ReadWriteOnce。
- `resources: requests: storage: 1Gi`:请求 1GB 的存储空间。
- `storageClassName: standard`:指定使用的 StorageClass 为上一步创建的 standard。

#### 步骤三:创建Pod
最后,我们需要创建一个 Pod 对象来使用之前创建的 PVC。以下是创建一个名为 my-pod 的 Pod 的示例。

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

- `name: my-pod`:Pod 的名称为 my-pod。
- `name: my-container`:容器的名称为 my-container,使用 nginx 镜像。
- `volumeMounts: mountPath: "/data" name: my-volume`:将 PVC 挂载到容器的 /data 目录下。
- `volumes: name: my-volume persistentVolumeClaim: claimName: my-pvc`:指定使用的 PVC 为上一步创建的 my-pvc。

通过按照上述步骤创建 StorageClass、PersistentVolumeClaim 和 Pod,就可以实现 K8S PVC 的自动挂载了。如果一切设置正确,PVC 应该会自动挂载到 Pod 中指定的路径上。如果遇到挂载不上的情况,可以检查日志和相关配置进行排查。希望这篇文章对你有所帮助!