# 实现K8S中的NFS持久化存储

在Kubernetes中,使用NFS(Network File System)进行持久化存储是一种常见的方式。NFS是一种用于在网络上共享文件系统的协议,可以让多台计算机共享存储在网络中的文件。

## 流程概述
下面是实现K8S中NFS持久化存储的基本步骤:
1. 部署NFS服务器
2. 创建NFS持久化存储类
3. 创建持久化存储卷
4. 创建使用持久化存储的Pod

## 具体操作步骤

| 步骤 | 操作 |
|------|------|
| 1. 部署NFS服务器 | 部署一个NFS服务器,用于提供存储服务。可以在物理机或虚拟机上搭建NFS服务器。 |
| 2. 创建NFS持久化存储类 | 在K8S集群中创建一个NFS持久化存储类,用于定义存储卷的参数。 |
| 3. 创建持久化存储卷 | 使用NFS持久化存储类创建一个NFS存储卷,这个卷将与NFS服务器上的一个目录相对应。 |
| 4. 创建使用持久化存储的Pod | 创建一个使用NFS存储卷的Pod,通过Volume挂载NFS存储卷到Pod中的指定目录。 |

### 代码示例

#### 1. 部署NFS服务器
这里以在Ubuntu上部署NFS服务器为例:

```bash
sudo apt-get update
sudo apt-get install nfs-kernel-server
sudo systemctl enable nfs-server
sudo systemctl start nfs-server
```

#### 2. 创建NFS持久化存储类
在K8S中创建NFS持久化存储类,需要定义相关参数,如下所示:

```yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-storage
provisioner: k8s.io/nfs
parameters:
server: nfs-server-ip
path: /exported/path
```

#### 3. 创建持久化存储卷
创建一个NFS存储卷,如下所示:

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

#### 4. 创建使用持久化存储的Pod
创建一个Pod,并挂载NFS存储卷到指定目录,示例代码如下:

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

通过以上步骤,我们可以实现K8S中使用NFS进行持久化存储。希望这篇文章能帮助你理解并成功实现NFS持久化存储。