K3s 学习(四)CentOS7 下挂载腾讯云 COS 为 K3s 集群提供持久化存储 PV

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


简单介绍 PV 和 PVC:需要一一对应,具体使用时的关系可以参考以下图片:
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 相关权限: 取消管理员权限并搜索 COS 相关权限
勾选前 9 条 COS 相关操作权限:
勾选前 9 条
之后点击创建用户并打开用户详情页面,点击 API 密钥新建即可:
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):
添加 PV
选择 NFS Share 和多节点读写,路径为你刚刚的挂载路径,IP 则填写内网 IP:
配置
保存之后稍等片刻就能看见状态可用:
可用
然后去 K3s 的任意 server 节点执行以下命令查看下是否添加 PV 成功:

kubectl get pv

成功

5、新建 PVC
添加 PVC:
添加 PVC
使用现有的持久卷并选择多主机读写:
创建
创建成功。
成功

6、建立容器测试访问
选择老朋友 Nginx 容器,数据卷处添加现有的同命名空间的 PVC,把 HTML 文件所在文件夹映射一下:
现有的同命名空间的 PVC
等待状态变为 Active:
Active
随便拷贝个网页放入存储桶相应文件夹下:

访问下页面:
成功

7、建立容器测试写入
编辑下刚刚建立的容器,映射下日志文件夹:
日志文件夹
之后重启等待状态变为 Active:
重启后 Active
检查下存储桶内,自动创建 log 文件夹和日志文件:
log

本章结束。