原理:
    image.png

    HostPath可以解决数据持久化的问题,但是一旦Node节点故障了,Pod如果转移到了别的节点,又会出现问题了,此时需要准备单独的网络存储系统,比较常用的用NFS、CIFS

    NFS是一个网络文件存储系统,可以搭建一台NFS服务器,然后将Pod中的存储直接连接到NFS系统上,这样的话,无论Pod在节点上怎么转移,只要Node跟NFS的对接没问题,数据就可以成功访问

    环境准备:
    image.png
    [

    ](https://blog.csdn.net/qq_27184497/article/details/121764723)
    # 在nfs上安装nfs服务
    [root@nfs ~]# yum install nfs-utils -y

    # 准备一个共享目录
    [root@nfs ~]# mkdir /root/data/nfs -pv

    # 将共享目录以读写权限暴露给192.168.5.0/24网段中的所有主机
    [root@nfs ~]# vim /etc/exports

    [root@nfs ~]# more /etc/exports
    /root/data/nfs 192.168.5.0/24(rw,no_root_squash)

    # 启动nfs服务
    [root@nfs ~]# systemctl restart nfs

    image.png

    # 在node上安装nfs服务,注意不需要启动, 这样的目的是为了node节点可以驱动nfs设备
    [root@k8s-master01 ~]# yum install nfs-utils -y

    配置清单:
    image.png

    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
    - name: busybox
    image: busybox:1.30
    command: [“/bin/sh”,”-c”,”tail -f /logs/access.log”]
    volumeMounts:
    - name: logs-volume
    mountPath: /logs
    volumes:
    - name: logs-volume
    nfs:
    server: 192.168.5.6 # nfs服务器地址
    path: /root/data/nfs # 共享文件路径

    效果演示:
    image.png

    # 创建pod
    [root@k8s-master01 ~]# kubectl create -f volume-nfs.yaml
    pod/volume-nfs created

    # 查看pod
    [root@k8s-master01 ~]# kubectl get pods volume-nfs -n dev
    NAME READY STATUS RESTARTS AGE
    volume-nfs 2/2 Running 0 2m9s

    # 查看nfs服务器上的共享目录,发现已经有文件了
    [root@k8s-master01 ~]# ls /root/data/
    access.log error.log

    相关文档:https://blog.csdn.net/qq_27184497/article/details/121764723