小说馆持久化存储

172.16.11.33 nfs

参考文档:

https://zhuanlan.zhihu.com/p/104471667

https://www.cnblogs.com/luoahong/p/13570420.html

https://zhuanlan.zhihu.com/p/631086682

https://blog.csdn.net/qq_33261700/article/details/119549172

https://blog.csdn.net/networken/article/details/86697018

https://www.jianshu.com/p/5e565a8049fc

https://blog.csdn.net/m0_37872216/article/details/107099921

本次项目采用Nginx部署静态页面,通过多个Nginx容器来提供服务。
多个Nginx容器部署服务需要有统一的配置文件和站点文件,这里选择Nginx容器挂载PVC卷实现统一。

pv-pvc-architecture-C.png

部署NFS持久存储

搭建NFS服务器

本次部署采用NFS
集群和nfs主机安装nfs

1
yum install nfs-utils.x86_64 -y

nfs主机作为服务端

  1. 创建共享文件夹
    1
    2
    3
    4
    mkdir /www
    mkdir /www/wwwroot
    mkdir /www/webconfig
    mkdir /www/logs
  2. 编辑NFS服务配置文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    vim /etc/exports

    /www/wwwroot 172.16.0.0/16(rw,sync,no_root_squash,no_subtree_check) #主机网段
    /www/webconfig 172.16.0.0/16(rw,sync,no_root_squash,no_subtree_check)
    /www/logs 172.16.0.0/16(rw,sync,no_root_squash,no_subtree_check)

    /www/wwwroot 10.233.0.0/16(rw,sync,no_root_squash,no_subtree_check) #k8s pod网段
    /www/webconfig 10.233.0.0/16(rw,sync,no_root_squash,no_subtree_check)
    /www/logs 10.233.0.0/16(rw,sync,no_root_squash,no_subtree_check)

    #rw 这个文件夹当然要能读能写。
    #sync 同步传输,文件要立刻传输到文件夹中而不是在缓冲区等着
    #no_root_squash 非主机的用户对该文件夹有完全控制的权限
    #no_subtree_check 当前新版本的nfs必须添加的一个属性
  3. 启动NFS服务
    rpcbind是NFS(网络文件共享协议)中进行消息通知的服务,一般是111端口,并且NFS配置开启rpcbind_enable=”YES”
    1
    2
    3
    exportfs -r
    service rpcbind restart
    service nfs restart
  4. 测试挂载NFS
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #查看 RPC 服务的注册状况
    rpcinfo -p localhost
    #showmount测试
    showmount -e 172.16.11.33 #在其他主机执行
    mount -t nfs 172.16.11.33:/www/wwwroot /www/wwwroot -o nolock,nfsvers=3
    #也可以将挂载NFS写入启动项中,因为NFS需要网络启动后执行,所以我放在rc.local里
    echo "mount -t nfs 172.16.11.33:/www/wwwroot /www/wwwroot -o nolock,nfsvers=3" >> /etc/rc.d/rc.local

    # nfsvers 设置使用NFS服务的NFS协议版本号
    # nolock 选择是否使用NLM协议在服务器上锁文件。当选择nolock选项时,锁对于同一主机的应用有效,对不同主机不受锁的影响。默认为lock

创建pv和pvc

webroot web站点目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#webrootpvc.yaml
#pv
apiVersion: v1
kind: PersistentVolume
metadata:
name: webroot
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: webroot
nfs:
path: /www/wwwroot
server: 172.16.11.33
---
#pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: webroot
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: webroot

webconfig web站点配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#webconfigpvc.yaml
#pv
apiVersion: v1
kind: PersistentVolume
metadata:
name: webconfig
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: webconfig
nfs:
path: /www/webconfig
server: 172.16.11.33
---
#pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: webconfig
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: webconfig

weblogs web站点日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#weblogspvc.yaml
#pv
apiVersion: v1
kind: PersistentVolume
metadata:
name: weblogs
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: weblogs
nfs:
path: /www/logs
server: 172.16.11.33
---
#pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: weblogs
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: weblogs

本次部署使用kubesphere
创建完成pvc后再存储的持久卷声明中可以看到
StorageClass_pvc-C.png
在应用负载-工作负载-找到创建的工作负载的存储上挂载卷设置对应路径即可。
注意挂载的卷中必须有服务需要的东西,容器才能够正常启动。
mount_pvc-C.png

这里挂载的保密字典是SSL证书,在站点配置文件中设置SSL证书路径到保密字典挂载的位置