安装

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

先决条件

  • MinIO 构建于底层存储之上,请确保当前集群已创建存储类。推荐使用 TopoLVM。

  • 下载对应您平台架构的 Alauda Container Platform Storage Essentials 安装包。

  • 通过 Upload Packages 机制上传 Alauda Container Platform Storage Essentials 安装包。

  • 下载对应您平台架构的 Alauda Container Platform (ACP) Object Storage with MinIO 安装包。

  • 通过 Upload Packages 机制上传 Alauda Container Platform (ACP) Object Storage with MinIO 安装包。

操作步骤

部署 Alauda Container Platform Storage Essentials

  1. 登录,进入 Administrator 页面。

  2. 点击 Marketplace > OperatorHub,进入 OperatorHub 页面。

  3. 找到 Alauda Container Platform Storage Essentials,点击 Install,进入 Install Alauda Container Platform Storage Essentials 页面。

    配置参数:

    参数推荐配置
    Channel默认通道为 stable。
    Installation ModeCluster:集群中所有命名空间共享单个 Operator 实例进行创建和管理,资源占用较低。
    Installation Place选择 Recommended,命名空间仅支持 acp-storage。
    Upgrade StrategyManual:Operator Hub 有新版本时,需要手动确认升级 Operator 到最新版本。

部署 Operator

  1. 在左侧导航栏点击 Storage > Object Storage。

  2. 点击 Configure Now。

  3. 在 Deploy MinIO Operator 向导页面,点击右下角 Deploy Operator。

    • 页面自动跳转到下一步表示 Operator 部署成功。

    • 若部署失败,请根据界面提示执行 Clean Up Deployed Information and Retry,然后重新部署 Operator。

创建集群

  1. 在 Create Cluster 向导页面,配置基本信息。

    参数描述
    Access Key访问密钥 ID。与私有访问密钥关联的唯一标识符,用于与访问密钥 ID 一起加密和签名请求。
    Secret Key与访问密钥 ID 配合使用的私有访问密钥,用于加密和签名请求,识别发送方并防止请求被篡改。
  2. 在 Resource Configuration 区域,根据以下说明配置规格。

    参数描述
    Small scale适用于处理最多 100,000 个对象,支持测试环境或数据备份场景中不超过 50 个并发访问。CPU 资源请求和限制默认设置为 2 核,内存资源请求和限制默认设置为 4 Gi。
    Medium scale设计用于企业级应用,需存储 1,000,000 个对象,支持最多 200 个并发请求。CPU 资源请求和限制默认设置为 4 核,内存资源请求和限制默认设置为 8 Gi。
    Large scale设计用于拥有 10,000,000 个对象存储需求和最多 500 个并发请求的集团用户,适合高负载场景。CPU 资源请求和限制默认设置为 8 核,内存资源请求和限制默认设置为 16 Gi。
    Custom为有特定需求的专业用户提供灵活配置选项,确保服务规模和性能需求的精准匹配。注意:配置自定义规格时,请确保:
    • CPU 资源请求大于 100 m。
    • 内存资源请求大于等于 2 Gi。
    • CPU 和内存资源限制大于等于资源请求。
  3. 在 Storage Pool 区域,根据以下说明配置相关信息。

    参数描述
    Instance Number增加 MinIO 集群中的实例数量可显著提升系统性能和可靠性,确保数据高可用。但实例过多可能导致:
    • 资源消耗增加。
    • 若单个节点承载多个实例,节点故障可能导致多个实例同时下线,降低集群整体可靠性。
    注意:
    • 最小实例数为 4。
    • 实例数大于 16 时,输入值必须是 8 的倍数。
    • 添加额外存储池时,实例数不得少于第一个存储池的实例数。
    Single Storage Volume单个存储卷 PVC 的容量。每个存储服务管理一个存储卷。输入单个存储卷容量后,平台会自动计算存储池容量及其他信息,可在 Storage Pool Overview 中查看。
    Underlying StorageMinIO 集群使用的底层存储。请选择当前集群中已创建的存储类。推荐使用 TopoLVM。
    Storage Nodes选择 MinIO 集群所需的存储节点,建议使用 4-16 个存储节点。平台会为每个选中的存储节点部署一个存储服务。
    Storage Pool Overview具体参数及计算公式,请参见 Storage Pool Overview。
  4. 在 Access Configuration 区域,根据以下说明配置相关信息。

    参数描述
    External Access启用时支持跨集群访问 MinIO;禁用时仅支持集群内访问。
    Protocol支持 HTTP 和 HTTPS;选择 HTTPS 时需填写 Domain 并导入域名证书的 Public Key 和 Private Key。
    注意:
    • 访问协议为 HTTP 时,集群内 pod 可通过获取的 IP 或域名直接访问 MinIO,无需配置 IP 与域名映射;集群内节点可通过获取的 IP 直接访问 MinIO,若需域名访问,则需手动配置 IP 与域名映射;外部访问可直接通过获取的 IP 访问。
    • 访问协议为 HTTPS 时,集群内外均无法通过 IP 访问 MinIO,需手动配置获取的 IP 与集群创建时填写的域名映射,方可通过域名正常访问。
    Access Method
    • NodePort:在每个计算节点主机上开放固定端口,将服务暴露到外部。配置域名访问时,建议使用 VIP 进行域名解析以保证高可用性。
    • LoadBalancer:通过负载均衡器转发流量到后端服务。使用前请确保当前集群已部署 MetalLB 插件且外部地址池有可用 IP。
  5. 点击右下角 Create Cluster。

    • 页面自动跳转至 Cluster Details 表示集群创建成功。

    • 若集群仍处于创建中,可点击 Cancel。取消后会清理已部署的集群信息,可返回集群创建页面重新创建集群。

创建 Bucket

登录集群控制节点,使用命令创建 bucket。

  1. 在集群详情页面,点击 Access Method 标签查看 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 cluster alias> http://<minio endpoint>:<port> <accessKey> <secretKey>
    • IPv6:

      mc --insecure alias set <minio cluster alias> http://[<minio endpoint>]:<port> <accessKey> <secretKey>
    • 域名:

      mc --insecure alias set <minio cluster alias> http://<domain name>:<port> <accessKey> <secretKey>
      mc --insecure alias set <minio cluster alias> https://<domain name>:<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@
  4. 创建 bucket。

    mc --insecure mb <minio cluster alias>/<bucket name>

上传/下载文件

创建 bucket 后,可使用命令行上传文件到 bucket 或下载 bucket 中已有文件。

  1. 创建测试上传文件。若上传已有文件,此步骤可跳过。

    touch <file name>
  2. 上传文件到 bucket。

    mc --insecure cp <file name> <minio cluster alias>/<bucket name>
  3. 查看 bucket 中的文件,确认上传成功。

    mc --insecure ls <minio cluster alias>/<bucket name>
  4. 删除已上传文件。

    mc --insecure rm <minio cluster alias>/<bucket name>/<file name>

相关信息

冗余因子映射表

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

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

Storage Pool Overview

Storage Pool Overview Parameter计算公式
Usable Capacity当实例数 ≤ 16 时,Usable Capacity = 单个存储卷容量 × (实例数 - 冗余因子)。
当实例数 > 16 时,Usable Capacity = 单个存储卷容量 × (实例数 - 4 × (实例数 + 15) / 16)。其中“4 × (实例数 + 15) / 16”的结果向下取整。
Total Capacity总容量 = 实例数 × 单个存储卷容量
Number of failover storage services tolerated当实例数 > 2 × 冗余因子时,可容忍故障存储服务数量 = 冗余因子。
当实例数 = 2 × 冗余因子时,可容忍故障存储服务数量 = 冗余因子 - 1