NFS 的使用步骤如下:
**1. 找一台机器作为 NFS 服务器**
```shell
【1】安装 NFS
# yum -y install nfs-utils
【2】启动 NFS 服务
# systemctl start nfs
# ps -ef | grep nfs
root 26919 2 0 22:39 ? 00:00:00 [nfsd4_callbacks]
root 26925 2 0 22:39 ? 00:00:00 [nfsd]
root 26926 2 0 22:39 ? 00:00:00 [nfsd]
root 26927 2 0 22:39 ? 00:00:00 [nfsd]
root 26928 2 0 22:39 ? 00:00:00 [nfsd]
root 26929 2 0 22:39 ? 00:00:00 [nfsd]
root 26930 2 0 22:39 ? 00:00:00 [nfsd]
root 26931 2 0 22:39 ? 00:00:00 [nfsd]
root 26932 2 0 22:39 ? 00:00:00 [nfsd]
root 27271 24077 0 22:40 pts/1 00:00:00 grep --color=auto nfs
【3】nfs 开机自启
# systemctl enable nfs-server
# systemctl enable rpcbind
【4】添加一个 NFS 挂载路径
# vim /etc/exports
/home/cone/share
【5】需要手动创建挂载路径
# mkdir -p /home/cone/share
【6】让配置生效
# exportfs -r
```
<br/>
**2. 在 k8s 集群所有的 node 节点安装 NFS**
>[info]master 节点不需要安装。
```shell
# yum -y install nfs-utils
```
<br/>
**3. 部署一个应用来演示 NFS 存储的调用**
```shell
【1】
# kubectl create deployment nginx-dep01 --image=nginx:latest --dry-run=client -o yaml > nginx-dep01.yaml
【2】
# vim nginx-dep01.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-dep01
name: nginx-dep01
spec:
replicas: 1
selector:
matchLabels:
app: nginx-dep01
template:
metadata:
labels:
app: nginx-dep01
spec:
containers:
- image: nginx:latest
name: nginx
volumeMounts:
- name: share-nginx
#这个是nginx默认的目录
mountPath: /usr/share/nginx/html
volumes:
- name: share-nginx
nfs:
#nfs服务器ip
server: 192.168.1.16
#nfs服务器的挂载目录
path: /home/cone/share
```
![](https://img.kancloud.cn/1c/b3/1cb3a8a4aa5b38e3ef59a9fe7ce924ff_2020x519.png)
<br/>
```shell
【3】
# kubectl apply -f nginx-dep01.yaml
# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-dep01-7ffcdf5865-pnm4b 1/1 Running 0 16m
【4】进入容器内
# kubectl exec -it nginx-dep01-7ffcdf5865-pnm4b bash
root@nginx-dep01-7ffcdf5865-pnm4b:/#
root@nginx-dep01-7ffcdf5865-pnm4b:/# cd /usr/share/nginx/html
root@nginx-dep01-7ffcdf5865-pnm4b:/# ls
/* 这个时候该目录下什么都还没有 */
【5】在 nfs 服务器的挂载目录下随便创建一个文件
# cd /home/cone/share
# vim index.html
Hello World!
【6】再看 Pod 容器内就可以看到创建的文件了
root@nginx-dep01-7ffcdf5865-pnm4b:/# ls
index.html
root@nginx-dep01-7ffcdf5865-pnm4b:/# cat index.html
Hello World!
```
<br/>
**4. 至此,说明已经可以将容器内的数据持久化到 NFS 服务器了**
****
参考文档:https://feisky.xyz/kubernetes-handbook/concepts/volume.html
- K8s是什么
- K8s特点
- K8s功能
- 为什么用容器
- K8s集群搭建
- 1. 集群架构
- 2. 机器初始化
- 3. 安装Docker
- 4. 配置k8s镜像仓库
- 5. 安装k8s核心工具
- 6. 初始化主节点
- 7. node节点加入集群
- 8. 安装Pod网络插件
- 9. 测试k8s集群
- yaml资源文件
- yaml文件作用
- yaml文件编辑语法
- 资源清单描述方法
- 命令行工具kubectl
- kubectl是什么
- kubectl命令语法
- Pod
- Pod是什么
- Pod特征
- Pod定义
- Pod基本操作
- Pod分类
- Pod生命周期
- Pod重启策略
- 镜像拉取策略
- 资源限制
- 健康检查
- Label
- Namespace
- ReplicationController
- ReplicaSet
- Deployment
- HorizontalPodAutoscaler
- Service
- Service是什么
- 应用Service
- Ingress
- Ingress是什么
- 部署ingress-nginx
- Helm
- Helm是什么
- Volume
- Volume是什么
- NFS的使用
- PV与PVC
- PV与PVC是什么
- PV与PVC的使用
- ConfigMap
- ConfigMap是什么
- ConfigMap创建
- ConfigMap使用
- ConfigMap热更新
- 滚动更新Pod
- Secret
- Secret作用
- Secret类型