初步学习minio

什么是minio

MinIO是一个高性能的对象存储服务,API兼容Amazon S3。它非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据等。MinIO是一个轻量级的服务,可以很简单的部署在内部环境中,而又具备云存储服务那种高扩展性。

minio的优点

  • 兼容Amazon S3 API:支持多语言,易于迁移
  • 高性能:读写速度快
  • 高可扩展性:可以线性扩展到PB级数据
  • 数据安全:支持数据加密,访问控制等
  • 成本低:开源软件,降低存储成本

minio组件

MinIO主要包含以下组件:

  • minio server:对象存储服务器
  • minio client:命令行客户端,用于访问minio service
  • SDK客户端:各种语言的SDK,方便应用程序访问minio service

minio基本概念

  • Bucket:用于组织存放Object的容器,该容器必须是全局唯一的。
  • Object:存储在Bucket中的数据内容,每个Object拥有Key(文件名)、Value(数据内容)和Version ID。
  • Keys:类似Object的文件名,用于唯一标识一个Object。
  • Region:物理位置,用于说明Bucket位于的物理位置。

操作minio

MinIO提供了命令行客户端minio client,可以通过它来进行简单的对象存储操作:

  • 创建Bucket:minio mb mybucket
  • 上传Object:minio cp myphoto.jpg mybucket
  • 下载Object:minio cp mybucket/myphoto.jpg ./myphoto.jpg
  • 删除Object:minio rm mybucket/myphoto.jpg
  • 列出Bucket:minio ls mybucket

此外,MinIO提供多种语言的SDK,可以很容易的在应用程序中使用MinIO服务进行对象存储操作。
好的,我们也可以不通过Helm Chart,直接使用Kubernetes资源对象来部署MinIO服务:

k8s部署minio

主要步骤如下:

  1. 准备镜像

    可以通过Dockerfile构建MinIO镜像,或者直接使用公共镜像minio/minio

  2. 准备Deployment

    用Deployment管理MinIO Pod,指定镜像、端口、访问凭证等信息。

  3. 准备Service

    创建Service,对外暴露MinIO服务。

  4. 准备PersistentVolume

    如果需要持久存储,需要准备PersistentVolume。

  5. 准备Deployment/StatefulSet

    根据单节点或者多节点,使用Deployment或者StatefulSet进行部署。

  6. 配置应用

    应用需要配置访问MinIO的endpoint、accessKey、secretKey等信息。

相比Helm Chart,直接部署需要准备更多的YAML定义,但可以更自由的定制部署逻辑。

需要注意配置持久存储、服务发现、密钥管理、监控告警等辅助功能。