安装

Alauda Container Platform (ACP) Object Storage with MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 KB 到最大 5TB 不等。

前提条件

MinIO 基于底层存储搭建,请确保当前集群中已创建存储类,推荐使用 TopoLVM。

部署 Operator

  1. 在左侧导航栏中,单击 存储 > 对象存储

  2. 单击 立即配置

  3. 部署 MinIO Operator 向导页中,单击右下角的 部署 Operator

    • 待页面自动进入下一步时,说明 Operator 部署成功。
    • 如果部署失败,请参考界面提示 清理已部署信息并重试,重新部署 Operator。

创建集群

  1. 创建集群 向导页中,配置基本信息。

    参数说明
    访问密钥访问密钥 ID。与私有访问密钥关联的唯一标识符;与访问密钥 ID 一起用于加密和签名请求。
    私有密钥私有访问密钥,与访问密钥 ID 一起用于加密和签名请求,标识发送方,防止请求被篡改。
  2. 资源配置 区域,参考以下说明配置规格。

    参数说明
    小型适用于处理上限为 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 和内存资源限制大于或等于资源请求。
  3. 存储池 区域,参考以下说明配置相关信息。

    参数说明
    实例数在 MinIO 集群中,增加实例数可以显著增强系统的性能与可靠性,确保数据的高可用性。但过多的实例数也会带来如下问题:
    • 资源消耗增大。
    • 如果一个节点承载多个实例,节点故障可能会导致多个实例下线,降低集群整体可靠性。
    因此,需谨慎平衡资源利用与容错能力,合理配置实例数。

    注意
    • 可填写的最小实例数为 4。
    • 当实例数大于 16 时,所填写的数值必须为 8 的倍数。
    • 添加额外存储池时,所填写的实例数需不小于第一个存储池的实例数。
    单个存储卷单个存储卷 PVC 的容量。每个存储服务管理一个存储卷,填写单个存储卷容量后,平台会自动计算出存储池容量等信息,可在 存储池概览 中查看。
    底层存储MinIO 集群使用的底层存储。请选择当前集群中已创建的存储类,推荐使用 TopoLVM。
    存储节点选择 MinIO 集群需要的存储节点。建议使用 4-16 个存储节点,平台会为每个选择的存储节点部署一个存储服务。
    存储池概览具体参数及计算公式请参考 存储池概览
  4. 访问配置 区域,参考以下说明配置相关信息。

    参数说明
    外网访问开启后支持跨集群访问 MinIO;关闭后仅支持集群内访问。
    协议支持 HTTP 和 HTTPS;选择 HTTPS 时,需填写 域名,并导入域名证书的 公钥私钥
    注意
    • 当访问协议为 HTTP 时,集群内 Pods 可通过获得的 IP 或域名直接访问 MinIO,无需配置 IP 地址和域名的映射;集群内节点可通过获得的 IP 直接访问 MinIO,如需使用域名访问,需手动配置 IP 地址和域名的映射;集群外可通过获得的 IP 直接访问 MinIO。
    • 当访问协议为 HTTPS 时,集群内、集群外不可通过 IP 直接访问 MinIO,需手动配置获得的 IP 地址和创建集群时填写的域名之间的映射,才能通过域名正常访问。
    访问方式
    • NodePort:在计算节点主机上开放一个固定端口以对外暴露服务。配置域名访问时,建议使用 VIP 进行域名解析,以确保高可用。
    • LoadBalancer:使用负载均衡器将流量转发到后端服务。使用前,请确保当前集群已部署 MetalLB 插件且外部地址池中有可用 IP。
  5. 单击右下角的 创建集群

    • 待页面自动进入 集群详情 时,说明集群创建成功。
    • 如果集群始终处于创建中,您可以单击 取消。取消后将清理已部署的集群信息并返回创建集群页面,您可以重新创建集群。

创建存储桶

登录集群的控制节点,使用命令创建存储桶。

操作步骤

  1. 在集群详情页面单击 访问方式 页签,查看 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}'
  2. 获取 mc 命令。

    wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /bin/mc && chmod a+x /bin/mc
    
  3. 配置 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>
      

    说明:

    • 在步骤 1 中获取的 IP 地址用于 minio endpoint
    • accessKeysecretKey 填写创建集群时的 访问密钥私有密钥
    • 配置示例:
      • 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@
  4. 创建存储桶。

    mc --insecure mb <minio 集群别>/<bucket>
    

上传/下载文件

存储桶创建完成后,您可以使用命令行向存储桶中上传文件,也可以从存储桶中下载已有文件。

操作步骤

  1. 创建一个文件用于上传测试,上传已有文件时可忽略此步骤。

    touch <文件名>
    
  2. 向存储桶中上传文件。

    mc --insecure cp <文件名> <minio 集群别>/<bucket>
    
  3. 查看存储桶中的文件,确认文件是否上传成功。

    mc --insecure ls <minio 集群别>/<bucket>
    
  4. 删除已上传的文件。

    mc --insecure rm <minio 集群别>/<bucket>/<文件名>
    

相关说明

冗余系数映射表

注意:添加额外的存储池时,冗余系数需要根据第一个存储池的实例数进行计算。

实例数冗余系数
4 - 52
6 - 73
>= 84

存储池概览

存储池概览参数计算公式
可用容量当实例数 ≤ 16 时,可用容量 = 单个存储卷容量 × (实例数 - 冗余系数)。当实例数 > 16 时,可用容量 = 单个存储卷容量 × (实例数 - 4 × (实例数 + 15) / 16),其中,“4 × (实例数 + 15) / 16”的计算结果需向下取整。
总容量总容量 = 实例数 × 单个存储卷容量
可容忍故障存储服务数当实例数 > 2 × 冗余系数时,可容忍故障存储服务数 = 冗余系数。当实例数 = 2 × 冗余系数时,可容忍故障存储服务数 = 冗余系数 - 1。