文档

Kubernetes 版 MinIO 对象存储

MinIO 是一种对象存储解决方案,它提供与 Amazon Web Services S3 兼容的 API,并支持所有核心 S3 功能。MinIO 旨在部署在任何地方 - 公有云或私有云、裸机基础设施、编排环境和边缘基础设施。

本网站记录了在 Kubernetes 平台上部署 MinIO 的最新稳定版本 MinIO 运算符:6.0.4 的操作、管理和开发。

MinIO 在双重许可下发布 GNU Affero 通用公共许可证 v3.0MinIO 商业许可证。通过 MinIO SUBNET 注册的部署使用商业许可证,并包含对 24/7 MinIO 支持的访问。

您可以使用 MinIO 控制台 和我们在 https://play.min.ioplay 服务器开始探索 MinIO 功能。play 是一个运行最新稳定版 MinIO 服务器的公共 MinIO 集群。上传到 play 的任何文件都应视为公共且不受保护的。有关连接到 play 的更多信息,请参阅 MinIO 控制台 play 登录

快速入门:适用于 Kubernetes 的 MinIO

此过程将单节点单驱动器 MinIO 服务器部署到 Kubernetes 上,以便早期开发和评估 MinIO 对象存储及其与 S3 兼容的 API 层。

使用 MinIO 运算符 在 Kubernetes 上部署和管理生产就绪的 MinIO 租户。

先决条件

  • 现有的 Kubernetes 部署,其中至少一个工作节点具有本地连接的驱动器。

  • 配置为在目标 Kubernetes 部署上创建和访问资源的本地 kubectl 安装。

  • 熟悉 Kubernetes 环境

  • 熟悉使用终端或 Shell 环境

过程

  1. 下载 MinIO 对象

    minio-dev.yaml 下载到您的主机

    curl https://raw.githubusercontent.com/minio/docs/master/source/extra/examples/minio-dev.yaml -O
    

    该文件描述了两个 Kubernetes 资源

    • 一个新的命名空间 minio-dev,以及

    • 一个 MinIO pod,它使用工作节点上的驱动器或卷来提供数据

    选择 MinIO 对象 YAML 概述 以获取对该对象的更详细描述。

    minio-dev.yaml 包含以下 Kubernetes 资源

    # Deploys a new Namespace for the MinIO Pod
    apiVersion: v1
    kind: Namespace
    metadata:
      name: minio-dev # Change this value if you want a different namespace name
      labels:
        name: minio-dev # Change this value to match metadata.name
    ---
    # Deploys a new MinIO Pod into the metadata.namespace Kubernetes namespace
    #
    # The `spec.containers[0].args` contains the command run on the pod
    # The `/data` directory corresponds to the `spec.containers[0].volumeMounts[0].mountPath`
    # That mount path corresponds to a Kubernetes HostPath which binds `/data` to a local drive or volume on the worker node where the pod runs
    # 
    apiVersion: v1
    kind: Pod
    metadata:
      labels:
        app: minio
      name: minio
      namespace: minio-dev # Change this value to match the namespace metadata.name
    spec:
      containers:
      - name: minio
        image: quay.io/minio/minio:latest
        command:
        - /bin/bash
        - -c
        args: 
        - minio server /data --console-address :9001
        volumeMounts:
        - mountPath: /data
          name: localvolume # Corresponds to the `spec.volumes` Persistent Volume
      nodeSelector:
        kubernetes.io/hostname: kubealpha.local # Specify a node label associated to the Worker Node on which you want to deploy the pod.
      volumes:
      - name: localvolume
        hostPath: # MinIO generally recommends using locally-attached volumes
          path: /mnt/disk1/data # Specify a path to a local drive or volume on the Kubernetes worker node
          type: DirectoryOrCreate # The path to the last directory must exist
    

    该对象部署两个资源

    • 一个新的命名空间 minio-dev,以及

    • 一个 MinIO pod,它使用工作节点上的驱动器或卷来提供数据

    MinIO 资源定义使用 Kubernetes 节点选择器和标签 将 pod 限制到具有匹配主机名标签的节点。使用 kubectl get nodes --show-labels 查看分配给集群中每个节点的所有标签。

    MinIO Pod 使用 hostPath 卷来存储数据。此路径必须对应于 Kubernetes 工作节点上的本地驱动器或文件夹。

    熟悉 Kubernetes 调度和卷配置的用户可以修改 spec.nodeSelectorvolumeMounts.namevolumes 字段以满足更具体的需要。

  2. 应用 MinIO 对象定义

    以下命令应用 minio-dev.yaml 配置并将对象部署到 Kubernetes

    kubectl apply -f minio-dev.yaml
    

    命令输出应类似于以下内容

    namespace/minio-dev created
    pod/minio created
    

    您可以通过运行 kubectl get pods 来验证 Pod 的状态

    kubectl get pods -n minio-dev
    

    输出应类似于以下内容

    NAME    READY   STATUS    RESTARTS   AGE
    minio   1/1     Running   0          77s
    

    您还可以使用以下命令检索有关 Pod 状态的详细信息

    kubectl describe pod/minio -n minio-dev
    
    kubectl logs pod/minio -n minio-dev
    
  3. 临时访问 MinIO S3 API 和控制台

    使用 kubectl port-forward 命令将流量从 MinIO Pod 临时转发到本地机器

    kubectl port-forward pod/minio 9000 9090 -n minio-dev
    

    该命令将 Pod 端口 90009090 转发到本地机器上的匹配端口,并在 shell 中处于活动状态。 kubectl port-forward 命令仅在 shell 会话处于活动状态时才有效。终止会话会关闭本地机器上的端口。

    注意

    此过程的后续步骤假设 kubectl port-forward 命令处于活动状态。

    要配置对 Pod 的长期访问,请在 Kubernetes 中配置 Ingress 或类似的网络控制组件以路由进出 Pod 的流量。配置 Ingress 超出了本文档的范围。

  4. 将您的浏览器连接到 MinIO 服务器

    通过在本地机器上打开浏览器并导航到 http://127.0.0.1:9001 访问 MinIO 控制台

    使用凭据 minioadmin | minioadmin 登录控制台。这些是默认的 root 用户 凭据。

    MinIO Console displaying login screen

    您可以使用 MinIO 控制台执行一般管理任务,例如身份和访问管理、指标和日志监控或服务器配置。每个 MinIO 服务器都包含其自己的嵌入式 MinIO 控制台。

    MinIO Console displaying bucket start screen

    有关更多信息,请参阅 MinIO 控制台 文档。

  5. (可选) 连接 MinIO 客户端

    如果您的本地机器已安装 mc 安装,请使用 mc alias set 命令进行身份验证并连接到 MinIO 部署

    mc alias set k8s-minio-dev http://127.0.0.1:9000 minioadmin minioadmin
    mc admin info k8s-minio-dev
    
    • 别名名称

    • MinIO 服务器的主机名或 IP 地址和端口

    • MinIO 用户 的访问密钥

    • MinIO 用户 的密钥

后续步骤