# 实现K8S存储策略NFS

## 介绍
在Kubernetes中,NFS(Network File System)是一种常见的存储策略,可以用来共享文件存储。通过NFS,我们可以将一个或多个NFS服务器上的共享目录挂载到多个Pod中。

### 步骤概览
在实现K8S存储策略NFS的过程中,我们需要完成以下步骤:

| 步骤 | 操作 |
| --- | --- |
| 1 | 创建NFS服务器 |
| 2 | 配置NFS服务器共享目录 |
| 3 | 创建NFS存储类(NFS Storage Class) |
| 4 | 创建PersistentVolume(PV) |
| 5 | 创建PersistentVolumeClaim(PVC) |
| 6 | 创建Pod并挂载NFS存储 |

### 具体步骤及代码示例
#### 步骤 1: 创建NFS服务器
首先,我们需要在某台服务器上安装并配置NFS服务,以提供共享目录。

#### 步骤 2: 配置NFS服务器共享目录
在NFS服务器上,我们需要配置共享目录并授权给Kubernetes集群使用。例如,我们可以将`/data`目录共享出来。

#### 步骤 3: 创建NFS存储类
在Kubernetes中,我们需要定义NFS存储类,以便将来创建PVC时可以引用。创建一个名为`nfs-storage-class.yaml`的文件,填入以下内容:

```yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-storage
provisioner: example.com/nfs
```

然后使用以下命令创建存储类:

```bash
kubectl apply -f nfs-storage-class.yaml
```

#### 步骤 4: 创建PersistentVolume
接下来,我们需要创建一个PersistentVolume来表示NFS服务器上的共享存储。创建一个名为`nfs-pv.yaml`的文件,填入以下内容:

```yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
nfs:
server: nfs-server-ip
path: /data
storageClassName: nfs-storage
```

然后使用以下命令创建PersistentVolume:

```bash
kubectl apply -f nfs-pv.yaml
```

#### 步骤 5: 创建PersistentVolumeClaim
现在,我们可以创建PersistentVolumeClaim来请求NFS存储。创建一个名为`nfs-pvc.yaml`的文件,填入以下内容:

```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: nfs-storage
```

然后使用以下命令创建PersistentVolumeClaim:

```bash
kubectl apply -f nfs-pvc.yaml
```

#### 步骤 6: 创建Pod并挂载NFS存储
最后,我们可以创建一个Pod并挂载NFS存储到容器中。创建一个名为`nfs-pod.yaml`的文件,填入以下内容:

```yaml
apiVersion: v1
kind: Pod
metadata:
name: nfs-pod
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- mountPath: "/mnt"
name: nfs-volume
volumes:
- name: nfs-volume
persistentVolumeClaim:
claimName: nfs-pvc
```

然后使用以下命令创建Pod:

```bash
kubectl apply -f nfs-pod.yaml
```

通过以上步骤,我们成功地实现了K8S存储策略NFS,将NFS存储挂载到了Pod中,从而实现了共享文件存储的功能。希望这篇文章能帮助你理解并顺利实现NFS存储策略在Kubernetes中的应用。