Kubernetes(简称K8S) 是一个开源的容器编排平台,为容器化的应用程序提供部署、维护和扩展的管理机制。在K8S中,存储挂载是非常重要的一部分,可以让应用程序在容器中访问持久化存储,保证了数据的持久化和可靠性。

K8S存储挂载方式通常有多种,包括EmptyDir、HostPath、PersistentVolume和PersistentVolumeClaim等。这里我们主要介绍PersistentVolume和PersistentVolumeClaim的使用方法。

### 步骤概览

| 步骤 | 操作 |
|---|---|
| 1 | 创建PersistentVolume对象 |
| 2 | 创建PersistentVolumeClaim对象 |
| 3 | 在Pod中挂载PersistentVolumeClaim |

### 具体操作步骤

#### 步骤一:创建PersistentVolume对象

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

- `capacity: storage: 1Gi`:设置存储容量为1Gi。
- `accessModes: - ReadWriteOnce`:设置访问模式为读写一次。
- `hostPath: path: /data`:指定存储在宿主机的`/data`路径上。

#### 步骤二:创建PersistentVolumeClaim对象

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

- `accessModes: - ReadWriteOnce`:与PersistentVolume的访问模式保持一致。
- `resources: requests: storage: 1Gi`:请求1Gi的存储容量。

#### 步骤三:在Pod中挂载PersistentVolumeClaim

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

- `volumeMounts: - mountPath: /usr/share/nginx/html`:将PersistentVolumeClaim挂载到Pod中的`/usr/share/nginx/html`路径。
- `volumes: - name: my-volume persistentVolumeClaim: claimName: my-pvc`:指定要挂载的PersistentVolumeClaim。

通过以上操作,我们成功地创建了一个持久化存储并将其挂载到了Pod中,实现了K8S存储挂载的方式。希望上述步骤对你有所帮助,祝学习顺利!