使用 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 证 ...
随机推荐
- rust实现weatherforecast的获取天气webapi
rust用来写webapi可能有点大材小用,但是作为入门学习应该说是不错的选择. cargo new webapi创建一个webapi项目,在src下面新建handler文件夹和models文件夹. ...
- AI 协助办公 |记一次用 GPT-4 写一个消息同步 App
GPT-4 最近风头正劲,作为 NebulaGraph 的研发人员的我自然是跟进新技术步伐.恰好,现在有一个将 Slack channel 消息同步到其他 IM 的需求,看看 GPT-4 能不能帮我完 ...
- Java 实战介绍 Cookie 和 Session 的区别
HTTP 是一种不保存状态的协议,即无状态协议,HTTP 协议不会保存请求和响应之间的通信状态,协议对于发送过的请求和响应都不会做持久化处理. 无状态协议减少了对服务压力,如果一个服务器需要处理百万级 ...
- java匿名内部类的初解
java原生态中的匿名内部类 1.匿名内部类的定义 使用匿名内部类的两种的方法 建立父类,重写父类的方法 实现接口的方法 2.普通类的实现 1. 普通类实现 实现普通类需要先声明对一个类的对象,再调用 ...
- 批量生成,本地推理,人工智能声音克隆框架PaddleSpeech本地批量克隆实践(Python3.10)
云端炼丹固然是极好的,但不能否认的是,成本要比本地高得多,同时考虑到深度学习的训练相对于推理来说成本也更高,这主要是因为它需要大量的数据.计算资源和时间等资源,并且对超参数的调整也要求较高,更适合在云 ...
- A First course in FEM —— matlab代码实现求解传热问题(稳态)
这篇文章会将FEM全流程走一遍,包括网格.矩阵组装.求解.后处理.内容是大三时的大作业,今天拿出来回顾下. 1. 问题简介 涡轮机叶片需要冷却以提高涡轮的性能和涡轮叶片的寿命.我们现在考虑一个如上图所 ...
- CSS3+Jquery实现带动画效果的下拉选择框
CSS3+JQuery实现带动画效果的下拉选择框. 元素结构为: 1 <div class="box"> 2 <p>this is the first li ...
- C语言。格式化符号
%s 输出字符串 %d 输出整形数字 %f 输出浮点数数字 %c 输出字符 %x 输出16进制 %04d 输出长度固定的整形数字(0001,0002,....)
- P3574 [POI2014] FAR-FarmCraft 吐槽 + 题解
洛谷上面的题解写的真的不太好,有很多错误,我来谈谈自己的理解. 设 \(f[i]\) 表示以 \(i\) 为根节点的子树中(包括节点 \(i\))的所有人安装好游戏所需要的时间(与下面的 \(g[i] ...
- SSE图像算法优化系列三十一:RGB2HSL/RGB2HSV及HSL2RGB/HSV2RGB的指令集优化-上。
RGB和HSL/HSV颜色空间的相互转换在我们的图像处理中是有着非常广泛的应用的,无论是是图像调节,还是做一些肤色算法,HSL/HSV颜色空间都非常有用,他提供了RGB颜色空间不具有的一些独特的特性, ...