创建对象存储
MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。
前提条件
MinIO 基于底层存储搭建,请确保当前集群中已创建存储类,推荐使用 TopoLVM。
部署 Operator
-
在左侧导航栏中,单击 存储管理 > 对象存储。
-
单击 立即配置。
-
在 部署 MinIO Operator 向导页中,单击右下角的 部署 Operator。
-
待页面自动进入下一步时,说明 Operator 部署成功。
-
如果部署失败,请参考界面提示 清理已部署信息并重试,重新部署 Operator。
-
创建集群
-
在 创建集群 向导页中,配置基本信息。
参数 说明 Access Key 访问密钥 ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 Secret Key 与访问密钥 ID 结合使用的私有访问密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 -
在 资源配置 区域,参考以下说明配置规格。
参数 说明 小型 适用于处理上限为 100,000 个对象,支持并发访问量不超过 50 的测试环境或数据备份应用场景。 其中,CPU 的资源请求和限制默认为 2 核,内存的资源请求和限制默认为 4 Gi。 中型 面向需求提升至 1,000,000 个对象存储,并能够处理高达 200 并发请求的企业级应用部署。其中,CPU 的资源请求和限制默认为 4 核,内存的资源请求和限制默认为 8 Gi。 大型 专为拥有 10,000,000 个对象存储需求和高达500并发处理能力的集团用户设计,适用于高负载场景。其中,CPU 的资源请求和限制默认为 8 核,内存的资源请求和限制默认为 16 Gi。 自定义 针对特定需求的专业用户,提供灵活的按需配置选项,确保服务规模与性能要求精准匹配。
注意:配置自定义规格时需要保证:- CPU 的资源请求需大于 100 m。
- 内存的资源请求需大于等于 2 Gi。
- CPU 和内存的资源限制需大于等于资源请求。
-
在 存储池 区域,参考以下说明配置相关信息。
参数 说明 实例数 在 Minio 集群中,增加实例数可以显著增强系统的性能与可靠性,确保数据的高可用性。但是过多的实例数也会带来如下问题: - 资源消耗增大。
- 当一个节点承载多个实例时,一旦发生节点故障,可能会引发多个实例同时下线,降低集群的整体可靠性。
注意:- 可填写的最小实例数为 4。
- 当实例数大于 16 时,所填写的数值必须为 8 的倍数。
- 添加额外的存储池时,所填写的实例数需不小于第一个存储池的实例数。
单个存储卷 单个存储卷 PVC 的容量。每个存储服务管理 1 个存储卷,填写单个存储卷容量后平台会自动计算出存储池容量等信息,可在 存储池概览 中查看。 底层存储 MinIO 集群使用的底层存储。请选择当前集群中已创建的存储类,推荐使用 TopoLVM。 存储节点 选择 MinIO 集群需要的存储节点。推荐使用 4-16 个存储节点,平台会为选择的每个存储节点部署 1 个存储服务。 存储池概览 具体参数及计算公式请参考 存储池概览 。 -
在 访问配置 区域,参考以下说明配置相关信息。
参数 说明 外网访问 开启后支持跨集群访问 MinIO;关闭则仅支持集群内访问。 协议 支持 HTTP 和 HTTPS;选择 HTTPS 时,需填写 域名,并导入域名证书的 公钥 和 私钥。
注意:- 当访问协议为 HTTP 时,集群内 Pod 可通过获取的 IP 或域名直接访问 MinIO,无需配置 IP 地址和域名的映射;集群内节点可通过获取的 IP 直接访问 MinIO,如需使用域名访问,需手动配置 IP 地址和域名的映射;集群外可通过获取的 IP 直接访问 MinIO。
- 当访问协议为 HTTPS 时,集群内、集群外不可通过 IP 直接访问 MinIO,需手动配置获取的 IP 地址和创建集群时填写的域名之间的映射,才能通过域名正常访问。
访问方式 - NodePort:在各个计算节点主机上开放一个固定端口,通过该端口对外暴露服务。配置域名访问时,推荐您使用 VIP 进行域名解析,以确保高可用。
- LoadBanlancer:使用负载均衡器为后端服务转发流量。使用前请确保当前集群已部署 MetalLB 插件且外部地址池中有可用 IP。
-
单击右下角的 创建集群。
-
待页面自动进入 集群详情 时,说明集群创建成功。
-
若集群始终处于创建中,可单击 取消。取消后将清理已部署的集群信息并返回创建集群页面,可重新创建集群。
-
创建存储桶
登录集群的控制节点,使用命令创建存储桶。
操作步骤
-
在集群详情页面单击 访问方式 页签,查看 MinIO 访问地址;或使用如下命令查询。
kubectl get svc -n <tenant ns> minio | grep -w minio | awk '{print $3}'说明:
tenant ns需替换为实际所属的命名空间minio-system。- 示例:
kubectl get svc -n minio-system minio | grep -w minio | awk '{print $3}'
-
获取 mc 命令。
wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /bin/mc && chmod a+x /bin/mc -
配置 MinIO 集群别名。
-
IPv4:
mc --insecure alias set <minio 集群别名> http://<minio endpoint>:<port> <accessKey> <secretKey> -
IPv6:
mc --insecure alias set <minio 集群别名> http://<[minio endpoint]>:<port> <accessKey> <secretKey> -
域名
mc --insecure alias set <minio 集群别名> http://<域名>:<port> <accessKey> <secretKey> mc --insecure alias set <minio 集群别名> https://<域名>:<port> <accessKey> <secretKey>
说明:
minio endpoint填写步骤 1 中获取的 IP 地址。accessKey和secretKey填写创建集群时的 Access Key 和 Secret Key。- 配置示例
- IPv4:
mc --insecure alias set myminio http://12.4.121.250:80 07Apples@ 07Apples@ - IPv6:
mc --insecure alias set myminio http://[2004::192:168:143:117]:80 07Apples@ 07Apples@ - 域名:
mc --insecure alias set myminio http://test.minio.alauda:80 07Apples@ 07Apples@或mc --insecure alias set myminio https://test.minio.alauda:443 07Apples@ 07Apples@
- IPv4:
-
-
创建存储桶。
mc --insecure mb <minio 集群别名>/<bucket 名称>
上传/下载文件
存储桶创建完成后,您可以使用命令行向存储桶中上传文件,亦可以从存储桶中下载已有文件。
操作步骤
-
创建一个文件用于上传测试,上传已有文件时可忽略此步骤。
touch <文件名称> -
向存储桶中上传文件。
# 上传文件;下载文件命令相同,将存储桶中的文件复制至目标路径即可 mc --insecure cp <文件名称> <minio 集群别名>/<bucket 名称> -
查看存储桶中的文件,确认文件是否上传成功。
mc --insecure ls <minio 集群别名>/<bucket 名称> -
删除已上传的文件。
mc --insecure rm <minio 集群别名>/<bucket 名称>/<文件名称>
相关说明
冗余系数映射表
注意:添加额外的存储池时,冗余系数需要根据第一个存储池的实例数进行计算。
| 实例数 | 冗余系数 |
|---|---|
| 4 - 5 | 2 |
| 6 - 7 | 3 |
| >= 8 | 4 |
存储池概览
| 存储池概览参数 | 计算公式 |
|---|---|
| 可用容量 |
|
| 总容量 |
|
| 可容忍故障存储服务数 |
|