使用 Sealos 一键部署高可用 MinIO,开启对象存储之旅
大家好!今天这篇文章主要向大家介绍如何通过 Sealos 一键部署高可用 MinIO 集群。
MinIO 对象存储是什么?

对象是二进制数据,例如图像、音频文件、电子表格甚至二进制可执行代码。对象的大小可以从几 B 到几 TB 不等。像 MinIO 这样的对象存储平台提供了专用工具和功能,使用标准的 S3 兼容 API 存储、列出和检索对象。
MinIO 对象存储使用存储桶来组织对象。存储桶类似于文件系统中的文件夹或目录,其中每个存储桶可以容纳任意数量的对象。MinIO 存储桶提供与 AWS S3 存储桶相同的功能。
MinIO 的纠删码
MinIO 支持分布式部署,支持服务和数据的高可用,核心就是 MinIO 的纠删码功能。
MinIO 实现了纠删码功能,将其作为提供数据冗余和可用性的核心组件。假设 MinIO 将一个对象分为 K 个数据分片,纠删码可根据 K 个数据分片生成 M 个校验分片,MinIO 需要最少 K 个任何类型的分片来恢复原对象。意味着总共 K+M 个分片中可以允许 M 个分片失效。
如下图举个栗子:我们将一个对象分为 12 个数据分片(Data shard),然后生成 4 个校验分片(Parity shard),总共有 16 个分片,分别存储在单个驱动中,此方式可以容忍 4 个驱动的失效,并且有 0.75(12/16)的存储效率。(此为 EC:4,EC 为 Erasure Coding,4 为校验分片的数量)

为了更好跟三副本方式进行比较,我们假设现有 2 个数据分片和 2 个校验分片,比较结果如下:
| 方式 | 容忍失效分片(副本)数 | 存储效率 |
|---|---|---|
| 纠删码(EC:2) | 2 | 1/2 |
| 三副本 | 2 | 1/3 |
通过比较可以看出纠删码可以提高存储效率,减少存储资源的使用(补充:当数据分片数等于校验分片数时,MinIO 中为了避免出现脑裂问题,写入数据时需要大多数分片,即 3 个分片,详情可查看:MinIO 可用性和弹性)。
MinIO 中可以调整 校验分片/总分片 的比例,比例范围为为 0 - 1/2。比例越大,数据可用性越高(可容忍失效分片数),同时存储效率越低。
快速部署高可用 MinIO 的教程
模板部署的 MinIO 采用了 4 节点和 EC:2 的方式。能保证单节点宕机不影响读写服务,双节点挂机不影响读服务,且存储效率为 1/2。
- 点击链接 https://cloud.sealos.top/?openapp=system-fastdeploy%3FtemplateName%3Dminio
- 输入账号密码和存储大小。(注:账号密码至少需要8位,存储大小部署后无法修改)
- 点击 Deploy Application,MinIO 启动!

- 点击 Confirm,跳转查看详情。

- 点击链接即可访问 MinIO Console 界面。

- 输入账号密码,开始使用 MinIO。简单创建一个 bucket 存储桶,然后上传 install.sh 文件。

至此,我们已经成功部署一个强大的对象存储应用了。可以开始愉快的存储对象啦!
MinIO on Kubernetes
抽象的介绍一下 MinIO 在 K8S 中的架构:
- Pod:作为 MinIO 实例运行的基础单元,每个 Pod 部署一个 MinIO 容器实例。
- StatefulSet:用于管理 4 个 MinIO Pod 副本,保证副本数量和顺序,为每个 Pod 提供稳定的网络标识(如 DNS 名字)和存储标识(PV 卷)。
- Service(Headless):为 StatefulSet 内的 MinIO Pod 提供内部服务发现,其他 Pod 可以通过固定的 DNS 名字访问每个 MinIO 实例。
- Service(ClusterIP):对外提供 MinIO Console 服务的访问端口和目标端口映射。
- Ingress:配置外网入口域名和路径映射规则,可以通过域名访问 Minio Console。

参考资料
- https://min.io/docs/minio/kubernetes/upstream/operations/concepts/erasure-coding.html
- https://min.io/docs/minio/kubernetes/upstream/operations/concepts/availability-and-resiliency.html#minio-availability-resiliency
- https://cloud.tencent.com/developer/article/1829995
使用 Sealos 一键部署高可用 MinIO,开启对象存储之旅的更多相关文章
- saltstack一键部署高可用
一健推送apache [root@server1 minions]# cd /etc/salt/ [root@server1 salt]# vim master [root@server1 salt] ...
- kubernetes实战(二十):k8s一键部署高可用Prometheus并实现邮件告警
1.基本概念 本次部署使用的是CoreOS的prometheus-operator. 本次部署包含监控etcd集群. 本次部署适用于二进制和kubeadm安装方式. 本次部署适用于k8s v1.10版 ...
- 附012.Kubeadm部署高可用Kubernetes
一 kubeadm介绍 1.1 概述 参考<附003.Kubeadm部署Kubernetes>. 1.2 kubeadm功能 参考<附003.Kubeadm部署Kubernetes& ...
- 企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录: 0x00 前言简述 ...
- 基于kubeasz部署高可用k8s集群
在部署高可用k8s之前,我们先来说一说单master架构和多master架构,以及多master架构中各组件工作逻辑 k8s单master架构 提示:这种单master节点的架构,通常只用于测试环境, ...
- kubernetes kubeadm部署高可用集群
k8s kubeadm部署高可用集群 kubeadm是官方推出的部署工具,旨在降低kubernetes使用门槛与提高集群部署的便捷性. 同时越来越多的官方文档,围绕kubernetes容器化部署为环境 ...
- kubernetes部署高可用Harbor
前言 本文Harbor高可用依照Harbor官网部署,主要思路如下,大家可以根据具体情况选择搭建. 部署Postgresql高可用集群.(本文选用Stolon进行管理,请查看文章<kuberne ...
- k8s部署高可用Ingress
部署高可用Ingress 官网地址https://kubernetes.github.io/ingress-nginx/deploy/ 获取ingress的编排文件 wget https://raw. ...
- Quartz学习笔记:集群部署&高可用
Quartz学习笔记:集群部署&高可用 集群部署 一个Quartz集群中的每个节点是一个独立的Quartz应用,它又管理着其他的节点.这就意味着你必须对每个节点分别启动或停止.Quartz集群 ...
- 【云原生 · Kubernetes】部署高可用kube-scheduler集群
个人名片: 因为云计算成为了监控工程师 个人博客:念舒_C.ying CSDN主页️:念舒_C.ying 部署高可用kube-scheduler集群 13.1 创建 kube-scheduler 证 ...
随机推荐
- RIP动态路由协议配置实验
项目背景 规划与配置接口 IP地址 AR1: [AR1-GigabitEthernet0/0/0]ip address 20.0.1.1 24 [AR1-GigabitEthernet0/0/1]ip ...
- Python生成指定大小的文件
转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/400bd75c.html 你好,我是测试蔡坨坨. 在日常测试工作中,我们经常需要对上传的文件大小进行测试,例如:一个文件上传 ...
- 使用Python实现学生信息管理系统
本文介绍了一个简单的学生信息管理系统,包括管理员登录.重置学生密码.添加.删除和修改学生信息.查询学生信息以及对学生成绩进行排序等功能.该系统使用Python编写,基于控制台交互 实现思路 该系统分为 ...
- IDEA的安装准备
IDEA的安装 第一步 第二步 第三部 第四步
- 记一次字符串末尾空白丢失的排查 → MySQL 是会玩的!
开心一刻 今天答应准时回家和老婆一起吃晚饭,但临时有事加了会班,回家晚了点 回到家,本以为老婆会很生气,但老婆却立即从厨房端出了热着的饭菜 老婆:还没吃饭吧,去洗下,来吃饭吧 我洗好,坐下吃饭,内心感 ...
- 用JavaScript撸一个静态链表
最近重新开始翻起<大话数据结构>,看到了静态链表部分里面讲C语言是利用数组模拟,觉得十分有趣.但是在JavaScript中,也可以用类似的方式去实现,定义一个数据域和一个结点域,然后实现链 ...
- 在linux上启动arthas报“Can not find java process”
发生背景 完整报错信息: [***@localhost ~]$ java -jar arthas-boot.jar [INFO] JAVA_HOME: /usr/lib/jvm/java-1.8.0- ...
- "Process finished with exit code 1" 进程结束
问题描述 : springboot 程序运行出现以下情况 没有错误日志 返回运行结束 状态码 1 状态码为 1 的时候表示程序不是异常终止 连接到目标VM, 地址: ''127. ...
- SpringBoot对接阿里云OSS上传文件以及回调(有坑)
前言 今天在对接阿里云OSS对象存储, 把这过程记录下来 链接 阿里云的内容很多,文档是真的难找又难懂 本文主要是用的PostObject API 加上 Callback参数 PostObject - ...
- Containerd组件 —— containerd-shim-runc-v2作用
1.概述 通过<浅析开源容器标准--OCI>.<浅析容器运行时>和<浅析Kubernetes CRI>这三篇博文我们了解了容器标准OCI.容器运行时以及Kubern ...