41、k8s-数据存储-基本存储-NFS(网路文件存储系统)
HostPath可以解决数据持久化的问题、但是一旦node节点故障了、pod如果转移到别的节点、又会出现问题、此时需要准备单独的网络存储系统、比较常用的 有:
·NFS
·CIFS
NFS是一个网络问卷存储系统、可以搭建一台NFS服务器、然后将pod中的存储直接连接到NFS系统上、这样的话、无论pod在节点上怎么转移、只要node跟NFS的对接没问题、数据就可以正常的访问
1、准备一台nfs服务器、这里准备192.168.177.180为nfs服务器:
·安装nfs:yum install -y nfs-utils
·创建一个共享目录:mkdir /root/data/nfs -pv #-p递归 -v可视化
·将共享目录暴露给192.168.177.0/24网段中的所有主机
··vim /etc/exports
---------------------------------------------------
#添加
/root/data/nfs 192.168.177.0/24(rw,no_root_squash)
----------------------------------------------------
·启动nfs服务:systemctl start nfs
2、在每个node节点主机上都安装nfs服务(但不要启动、只需安装、用来驱动而已):
·在node-1节点安装nfs:yum install -y nfs-utils
3、在master节点编写pod的yaml文件:
-------------------------------------------------------------------------
apiVersion: v1
kind: Pod
metadata:
name: volume-nfs
namespace: dev
spec:
containers:
- name: nginx
image: nginx:1.17.1
ports:
- containerPort: 80
volumeMounts:
- name: logs-volume
mountPath: /var/log/nginx #pod容器的目录 、将nginx目录下的文件挂载到nfs服务器的/root/data/nfs 目录下
- name: busybox
image: busybox:1.30
command: ["/bin/sh","-c","tail -f /logs/access.log"]
volumeMounts:
- name: logs-volume
mountPath: /logs #pod容器的目录
volumes:
- name: logs-volume
nfs:
server: 192.168.177.180 #nfs服务器的地址
path: /root/data/nfs #共享文件路径
------------------------------------------------------------------------------------------
4、创建pod:kubectl create -f volume-nfs.yaml
5、查看pod:kubectl get pods volume-nfs -ndev -owide
------------------------------------------------------------------------------------------
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
volume-nfs 2/2 Running 0 52s 10.244.1.97 node-1 <none> <none>
#pod部署在node-1节点上
-----------------------------------------------------------------------------------------------------
6、查看nfs服务器上是否多了/root/data/nfs目录:
7、在master主机上访问nginx:curl 10.244.1.97
8、查看/root/data/nfs/下的access.log日志的变化: