第四步中:安装rancher longhorn,实现容器文件挂载
之前在国企,曾经专门针对容器挂载立专项来调研,当时选择主流的ceph,最终结果是成功搭建了用于k8s集群的共享存储,但要独立找服务器来部署,增加了成本,而且运维相当复杂,rancher longhorn部署简单,直接在rancher管理界面就可以部署,而且存放的介质使用的是K8s集群的机器上面的磁盘,能节约成本,当然前提是服务的的磁盘有足够的空间,虽然网上有说longhorn读写性能一般,但在服务读写要求不是很严格的情况下,还是以简单,减少运维的工作量作为选择的标准。
具体部署环境与第四步上一样
服务器IP | 用途 | 环境说明 |
10.10.10.5 | 部署rancher | centos 8 安装docker |
10.10.10.6 | k8s-master1 ,etcd | centos 8 安装docker |
10.10.10.7 | k8s-master2 ,etcd | centos 8 安装docker |
10.10.10.8 | k8s-master3,etcd | centos 8 安装docker |
10.10.10.9 | k8s-node1,worker | centos 8 安装docker |
10.10.10.10 | k8s-node2,worker | centos 8 安装docker |
1、部署前准备,建立文件夹
在K8s集群每个节点的服务器,选择一个相同的路径建立一个文件夹,我的路径是:/home/software/longhorn,另外官方文档有如下红框说明,需要安装一个模块,但我使用的centos stream 8,默认就已经自带,所以不需要安装
2、利用 rancher安装longhorn
在rancher选择一个集群,在“应用”-->“charts”选择longhorn,具体如下图,这里加载有点慢,需要有耐心等待相应
进入到界面后,有一堆参数需要配置,其中个人觉得比较重要的几个如下:
个人觉得就这个有用,其他的可能我水平有限,也不太清楚有什么用,如果有高人看到该文章,欢迎指教
如果安装成功,在rancher集群管理界面,会出现longhorn选项,点击能进入longhorn管理界面,具体如下图:
3、使用Minio作为longhorn的备份,这一步十分坑人,具体说明该如下:
1)、如果你去搜索引擎或者官方文档,查找配置方法,都会要你按照如下步骤来设置:
echo -n https://10.10.10.1:9090 |base64 #将minio接口地址转成base64
echo -n minio用户名|base64 #将minio用户名转成base64
echo -n 用户密码 |base64 #将minio用户密码转成base64
然后在k8s longhorn-system命名空间下创建Secret 类型 Opaque,具体录入如下内容:
AWS_ACCESS_KEY_ID 对应minio用户名转成base64
AWS_ENDPOINTS 对应minio接口地址转成base6 AWS_SECRET_ACCESS_KEY 对应minio用户密码转成base64
AWS_CERT 直接上传minio public.crt证书
以上步骤并没有问题,但如果是使用rancher的管理界面来录入上面的内容,后面设定longhorn备份存放路径时就会报错,因为rancher会对你录入的内容再自动转换成base64,如果你录入是 echo -n输出的base64,那么rancher再转一次,相当于base64的base64,所以如果是在rancher管理界面建立Secret时,一定要录入的是原始值,就是你安装minio那条docker run命令的配置,千万不要录入 echo -n的结果,之前我就是录入了echo -n的结果,搞了我一天的时间,最终输入原始值才配置成功。
2)、在longhorn 的Setting界面,配置备份目标,具体如下图,
例如:s3://longhorn-test@dummyregion/backup
规则说明:s3://桶名@dummyregion/存放备份的文件夹名
配置完成后,点击Backup,如果没有弹出错误就表示设置成功
3)、在rancher管理界面,建立持久券声明,具体如下图,然后找一个容器挂载一些内容到这个声明对应的volume
4)、在longhorn找到对应的volume,进入这个volume的管理界面,点击Create Backup,或者新增Recurring Jobs 设置Task类型为backup,验证备份结果,具体如下图
如果一切正常,在Backup界面能看到备份记录,在Minio具体的桶能看到备份文件,具体如下图: