如何为 Longhorn 扩展对象存储能力

news2024/10/7 16:20:27

作者:
王海龙,Rancher 中国社区技术经理,Linux Foundation APAC Evangelist,负责 Rancher 中国技术社区的维护和运营。拥有 8 年的云计算领域经验,经历了 OpenStack 到 Kubernetes 的技术变革,无论底层操作系统 Linux,还是虚拟化 KVM 或是 Docker 容器技术都有丰富的运维和实践经验。

在云原生环境中,非常重要的环节之一就是提供一个可以使用标准协议与客户端交互的存储系统。大家可能会马上联想到简单存储服务 S3 (Simple Storage Service)。S3 是一个庞大的协议,涵盖了存储桶、对象、密钥、版本控制、ACL 和区域等关键概念。

Longhorn 是 Kubernetes 的分布式块存储系统,除了支持块存储以外,还提供了文件系统能力。那么,Longhorn 能否充当 S3 的服务器,并提供单一的 AWS S3 API 接口来访问后端数据存储呢?

当然可以!但是你可能需要一个 S3 网关来向外部客户端提供对数据的访问权限。

s3gw 项目让这一切设想变的可行!

什么是 s3gw?

s3gw 是一项与 S3 兼容的服务,专注于在任何 PVC 支持的 Kubernetes 环境中进行部署,包括 Longhorn。s3gw 自成立以来,关注重点一直在云原生部署上。但是,如果附加了某种形式的存储,s3gw 是可以部署在许多场景中的。

s3gw 基于 Ceph 的 RADOSGW (RGW),但它是作为独立服务运行的,没有 RADOS 集群,并且依赖于 SUSE 存储团队持续开发的存储后端。目前 s3gw 仍处于开发的早期阶段,但它已经可以用于测试和使用一些 S3 功能。

以上介绍来自 s3gw 官网的直译。大家可以把 s3gw 看作一个减配版的 minio。只不过 s3gw 为了补充 Rancher 产品组合,目前将重心放在和 Longhorn 的适配上,但该工具不限于 Rancher 产品。另外,s3gw 采用的是 Apache License, Version 2.0,而 minio 部分组件采用的是 GNU AGPLv3 license

接下来,本文将介绍如何安装和使用 s3gw。

部署 s3gw

s3gw 依赖一个基础的 Kubernetes 集群和 Longhorn。本次介绍将通过 Rancher 创建一个下游 K3s 集群,然后通过 Rancher 应用商店在下游 K3s 集群中安装 Longhorn 和 s3gw。

部署 Rancher 和 K3s

为了节省篇幅,部署 Rancher 和 K3s 的步骤就不在本文中详细描述,大家可参考 Rancher 和 K3s 文档进行部署。

演示环境:

  • 操作系统:Ubuntu 20.04.5 LTS
  • Rancher 版本:rancher/rancher:v2.7.0
  • 下游 K3s 版本:v1.24.8+k3s1
  • s3gw chart:0.8.0
  • Longhorn chart:101.1.0+up1.3.2

部署 Longhorn

通过 Rancher 部署 Longhorn 非常简单,只需要进入下游 K3s 集群,在 Rancher 仪表板左侧 Apps 下的 Charts 选择 Longhorn 便可开始部署 Longhorn:

安装非常简单,你不需要更改 chart 中的任何默认值。最后,如果一切顺利,你应该会看到 Rancher 的控制台显示:

安装 Longhorn 后,你只需单击左侧 Rancher 菜单中的 Longhorn 菜单即可重定向到 Longhorn 的仪表板:

新安装的 Longhorn 显示仍然没有应用程序使用持久卷。

部署 s3gw

和 Longhorn 一样,你仍然可以使用 Apps 来安装 S3gw,你会在合作伙伴存储库中找到可用的 s3gw,如下所示:

你也可以为 s3gw 设置一些自定义的参数。

本次 Demo 取消了 Create Storage Class 选项,并且修改 Storage Classlonghorn。因为 Longhorn 已经通过 Rancher App 进行部署,并且名称为 longhorn

安装完成后,如果一切顺利,你应该会看到 Rancher 的控制台显示:

在 Longhorn 仪表板上,你可以验证应用程序是否正在使用 Longhorn 持久卷:

以上,我们就完成了 s3gw 的安装,接下来,我们就可以验证 S3gw 的使用!

验证 s3gw

默认情况下,s3gw chart 配置一个 ingress,该 ingress 指向具有 FQDN 的 S3 网关:s3gw.local。因此,你必须在 /etc/hosts 中定义 s3gw.local 指向主机物理接口之一的 IP 地址。

如果部署 s3gw 时启用了 S3 UI,那么也需要将 S3 UI 的 FQDN 加到映射文件中,例如:

35.182.248.120 s3gw.local
35.182.248.120 s3gw-ui.local

要测试 S3 gateway,你可以依赖 s3cmd,它是一个流行的命令行 S3 客户端。

安装后,你可以从 https://raw.githubusercontent.com/aquarist-labs/s3gw-core/main/env/s3cmd.cfg 获取 s3cmd 配置文件并将其用于 s3gw。

需要修改文件中的 access_keysecret_key

接下来,你需要做的就是创建一个目录,将 s3cmd.cfg 放入其中,最后调用 s3cmd。

创建 bucket

$ s3cmd -c s3cmd.cfg mb s3://foo

上传文件到 bucket 中

让我们创建一个 1mb 的文件,填充一些随机数据并将其放入存 bucket 中:

$ dd if=/dev/random bs=1k count=1k of=obj.1mb.bin
$ s3cmd -c s3cmd.cfg put obj.1mb.bin s3://foo

列出 bucket 中包含的对象

$ s3cmd -c s3cmd.cfg ls s3://foo
2022-12-02 02:05      1048576  s3://foo/obj.1mb.bin

删除 bucket

$ s3cmd -c s3cmd.cfg rm s3://foo/obj.1mb.bin

Rancher 备份对接 S3gw

Rancher 可以通过 rancher-backup operator 来备份和恢复任何 Kubernetes 集群上的 Rancher,备份文件可以保存在 S3 兼容的对象存储中。这样我们就可以利用 rancher-backup operator 将 Rancher 备份通过 s3gw 存储在 longhorn 中。

要实现以上的需求,只需要在创建 Rancher 备份时选择 Use an S3-compatible object store,并设置 s3gw 的连接参数即可,以下是示例:

备份创建成功后,可以通过 s3cmd 确认 Rancher 备份是否上传到 s3gw:

$ s3cmd -c s3cmd.cfg ls s3://foo
2022-12-02 02:09      1048576  s3://foo/obj.1mb.bin
2022-12-02 02:55       826155  s3://foo/rancher-backup-demo-455e4847-d18f-4ae5-a960-90ecc5768986-2022-12-02T02-55-36Z.tar.gz

S3gw UI

s3gw Web UI 提供了一种与 s3gw 服务交互的直观方式,包括用户和存储桶管理,以及对象资源管理器。

要访问 s3gw Web UI,可以使用在 chart 中配置的 S3 UI FQDN 访问 S3 Web UI(本例为:s3gw-ui.local),并使用 chart 中设置的 Access keySecret key 作为凭证登录 S3 Web UI(本例为:test/test):

下面是当前 UI 版本的一些屏幕截图,但请记住,我们仍在积极开发它,它的功能还不完整。

总 结

本文主要介绍了如何在 Rancher 中安装 Longhorn/s3gw 以及使用 S3 网关系统。K3s、Rancher 和 Longhorn 是建立一个具有弹性和高性能存储环境的强大工具,如果你需要将存储暴露给外部客户端,那么 s3gw 是一个非常好的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件包管理器RPM与yum

1、RPM安装软件包 安装单个rpm软件包 下载JDK8u221的rpm软件包 链接:https://pan.baidu.com/s/1fYKNNM02GBh-cOUuajkBIg 提取码:yg53 上传JDK8u221的rpm软件包到虚拟机/opt目录 命令:rpm -ivh jdk-8u221-linux-x64.rpm 查看JDK版本 命令&a…

C语言split分割字符串

C语言split分割字符串。 //以下解法的前提是,先把所有环变成1.无环路,2.一个环没有扣住3个及以上的其他环 voidmain(){ intarray[16]{0}; //init,array[1]xxx;根据输入初始化数组,如1-2,则,array[1]2,... intHash…

在线人事管理系统

开发工具(eclipse/idea/vscode等):idea 数据库(sqlite/mysql/sqlserver等):mysql 功能模块(请用文字描述,至少200字):本系统按功能分为以下几个模块: “简易云”是这个系统的名字 (1)登录页面:实…

【HMS Core】华为统一扫码服务ScanKit如何获取具体条码的类型?

1、问题描述 项目中接入了华为的统一扫码服务SDK,识别过程正常,但是目前有个需求,需要在扫码完成之后根据条码的具体类型处理接下来的业务。 问题是:识别完条形码后,如何拿到具体的条形码和二维码类型,比…

从零搭建本地pypi镜像源1:快速体验

前言: 许多公司,出于数据安全与知识产权的原因,在公司内部搭建局域网进行算法开发。配置一个本地的pypi镜像源对工程开发十分重要。搭建本地pypi镜像源的工具有多种,本文主要介绍pip2pi方法。 第一步:新建项目&#…

间接采购品类多,机械制造企业如何破局制胜优化间采管理?

受贸易政策和能源结构转型等宏观因素的叠加影响,当前机械制造业的市场环境正在迅速变化。过去几十年来,全球经济的有利形势迅速逆转,复杂的国际形势也影响了区域乃至全球贸易平衡。在国内,疫情频发、产业升级、能源转型、“双碳”…

10个提高生产力的 Linux 命令与技巧,用完直接起飞

文章目录一、前言二、使用tab键进行补全2.1 使用Tab键补全命令2.2 使用Tab键补全路径2.3 使用Tab键补全参数三、切换回上一个工作目录四、返回用户主目录五、搜索您使用过的命令六、移至行首或行尾七、快速删除八、使用 less读取文件九、格式化输出结语一、前言 在本文中&…

多数据源解决分布式事务

环境:ideaspringboot2.x 场景:调用addUser方法执行对两个数据库的表操作,如果方法出现异常就回滚 user数据库中的users表 order数据库中的order_number表 将各自的事务管理器改为统一事务管理器即可 第一步pom文件配置jta atomikos 依赖 &l…

Acwing-872. 最大公约数

d | a, a | b > d | ax by (a, b) (b, a mod b) 证明:a mod b a - [a / b] * b a - c * b 注:[ ] 为下取整符号,[a / b] 记为c 所以,(a, b) (b, a - c * b) &#xf…

FFmpeg基础到工程-多路H265监控录放开发学习笔记

多路H265监控录放开发学习笔记 课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 具体内容包括: 一、视频监控的架构和流程 二、FFmpeg4.3SDL2Qt5开发环境的搭建 三、FFmpeg的…

Chomsky文法

一、实验原理 了解0123型文法的定义并会判断各个文法,会编写并利用程序进行0123型文法的判断 二、实验目的 由于不同文法的判断归根结底是对产生式中不同终结符和非终结符个数的判断,所以在程序中先放置三个字符串集合用以存储终结符、非终结符、产生…

git clone info/refs not valid: is this a git repository问题解决

项目场景: 在我们使用gitlab克隆代码时候,发现无法克隆,遇到如下问题 $ git clone http://192.168.2.x/product/demo.git Cloning into zhlx-web-bpmn... fatal: http://192.168.2.x/product/demo.git/info/refs not valid: is this a gi…

几张图片生成3D模型?距离真正的AI建模还有多远?

时间溯回,早在2017年,美图秀秀就曾引入人工智能美化人像而被谷歌誉为“最佳娱乐App”。智能技术奔腾发展,今年的AIGC技术可谓在各行各业大放异彩,从AI绘画、AI写作到AI配音,人工智能技术自动生成内容已经成为继UGC、PG…

Go C编程 第1课 神奇的魔笔

慧通教育 慧通教育 1.画长方形(GoC测试题样例) 难度:1 登录 26.画7字(魔法学院第3课) 难度:1 登录 27.画2字(魔法学院第3课) 难度:1 登录 28.画十字(魔法学院第3课) 难度:1 登录 29.画旗帜(魔法学院第…

linux系统使用rsync做主备服务器文件同步

根据本文档设置,可以实现备机自动同步主机中的文件。 (注意,此方式缺陷为:如果主机文件修改,但是文件大小无变化或者文件变小时,无法自动同步到备机中,只有主机中文件修改后变大或者名称修改才能…

DP学生最喜欢/讨厌选学的IB课程是什么?

我们看看IBDP在读生们对于IBDP各学科的主观看法供正在选课的准IB学生们参考!(以下以第一人称方式,信息汇总于IB论坛,仅汇总部分科目,主观性强,仅供参考)DP学生最喜欢的IB课程 ● 数学 AA HL 被数…

Java基于springboot+vue+elementUI企业制度管理系统

本企业制度管理系统是针对目前企业制度管理的实际需求,从实际工作出发,对过去的企业制度管理系统存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率…

如何从音频中提取伴奏?这篇文章告诉你如何提取伴奏

有没有小伙伴在制作视频后期的时候为配乐而烦恼过呢?我就有,之前想为一个视频配上音乐,就直接将歌曲导入视频里面,但出来的效果很是杂乱,导致视频的声音听起来非常嘈杂,影响到了听感和观感,但是…

.NET MAUI Community Toolkit 中的新增功能

对于 .NET MAUI Community Toolkit 来说,11月是一个繁忙的时期,它发布了多个版本,其中包含大量令人惊叹的新功能。最新版本具有新的视图、布局、Tizen 支持、.NET 7 支持等等。这篇文章带你快速了解所有新功能。 什么是 .NET Community Toolk…

Spring Security学习笔记

目录 1、简介 2、初步使用 3、简单实现自定义登录页面用户名和密码 1、简介 Spring Security是一个安全管理框架,主要功能是认证和授权,大中型项目用的比较多,小项目Shiro用的比较多,但是Spring Security比Shiro功能更强大&am…