考虑到之后的项目有日志记录和分析的功能需求,提前准一下用以日志存储的 PV,虽然说挂载到服务器本地路径也可以,但这样的话服务器到期时就会有点麻烦,不如直接使用 COS 做存储,后期只需要切换服务器挂载即可。
简单介绍 PV 和 PVC:需要一一对应,具体使用时的关系可以参考以下图片:

1、安装腾讯云 COSFS 工具
官方文档:COSFS 工具
我这里选择了 Rancher 所在的服务器进行安装和后续挂载,只是考虑到这个服务器会持续续费。
安装依赖:
yum -y install libxml2-devel libcurl-devel
下载安装包:
wget https://github.com/tencentyun/cosfs/releases/download/v1.0.19/cosfs-1.0.19-centos7.0.x86_64.rpm
安装:
rpm -ivh cosfs-1.0.19-centos7.0.x86_64.rpm --force
2、配置密钥等信息并将 COS 作为存储盘挂载服务器上
在服务器所在同地域新建存储桶以实现内网访问:

获取自己的 API 密钥:

注意:用这个 API 密钥可以访问和操作你账户内的所有资源,包括服务器和 CDN 等,因此如果你对安全性有要求,可以参照以下步骤一来创建只有 COS 操作权限的密钥。
选择用户列表并选择新建用户:
选择快速创建之后,输入用户名并修改权限:
取消管理员权限并搜索 COS 相关权限:
勾选前 9 条 COS 相关操作权限:
之后点击创建用户并打开用户详情页面,点击 API 密钥新建即可:
复制密钥并写入配置文件:
注:参数自行替换,给配置文件设置 640 权限防止密钥泄露。
echo $BucketName_APPID:$SecretId:$SecretKey > /etc/passwd-cosfs
chmod 640 /etc/passwd-cosfs
运行工具以将 COS 存储桶挂载:
注:path 为本地路径,Region 参数可以在你的 COS 存储桶页面访问域名处取得。
cosfs $BucketName_APPID $path -ourl=http://cos.$Region.myqcloud.com -odbglevel=info -oallow_other
测试是否挂载成功:
vi $path/test.txt
之后保存,然后去存储桶文件列表界面查看:

成功。
3、安装并配置挂载文件夹的 NFS 服务
给挂载文件夹所在的服务器和所有 K3s 节点服务器安装 NFS(客户端和服务端均需要):
yum -y install nfs-utils
开始配置服务端,接下来的步骤只需要在挂载文件夹所在的服务器上做即可,启动服务并设置为开启自启:
systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs
配置共享:
# 路径和内网网段自行替换
echo "$path 10.0.0.0/22(fsid=0,rw,sync,no_root_squash,no_all_squash)" > /etc/exports
# 重新载入配置文件
exportfs -r
# 重启服务
systemctl restart nfs
之后检查一下本地的共享目录:
showmount -e localhost
无误之后此步结束。
4、Rancher 界面新增 PV 存储
注意:因为 PV 和 PVC 是一对一的关系,而容器在选择 PVC 作为存储路径时候可以选择 PVC 下的子目录,即支持 PVC 和容器一对多,因此这里创建一个较大的 PV 给多个中间件容器同时使用(只有同命名空间下的容器才能使用该命名空间下的 PVC):

选择 NFS Share 和多节点读写,路径为你刚刚的挂载路径,IP 则填写内网 IP:

保存之后稍等片刻就能看见状态可用:

然后去 K3s 的任意 server 节点执行以下命令查看下是否添加 PV 成功:
kubectl get pv

5、新建 PVC
添加 PVC:

使用现有的持久卷并选择多主机读写:

创建成功。

6、建立容器测试访问
选择老朋友 Nginx 容器,数据卷处添加现有的同命名空间的 PVC,把 HTML 文件所在文件夹映射一下:

等待状态变为 Active:

随便拷贝个网页放入存储桶相应文件夹下:

访问下页面:

7、建立容器测试写入
编辑下刚刚建立的容器,映射下日志文件夹:

之后重启等待状态变为 Active:

检查下存储桶内,自动创建 log 文件夹和日志文件:

本章结束。