Kubernetes 版 MinIO 对象存储
MinIO 是一种对象存储解决方案,它提供与 Amazon Web Services S3 兼容的 API,并支持所有核心 S3 功能。MinIO 旨在部署在任何地方 - 公有云或私有云、裸机基础设施、编排环境和边缘基础设施。
本网站记录了在 Kubernetes 平台上部署 MinIO 的最新稳定版本 MinIO 运算符:6.0.4 的操作、管理和开发。
MinIO 在双重许可下发布 GNU Affero 通用公共许可证 v3.0 和 MinIO 商业许可证。通过 MinIO SUBNET 注册的部署使用商业许可证,并包含对 24/7 MinIO 支持的访问。
您可以使用 MinIO 控制台 和我们在 https://play.min.io 的 play 服务器开始探索 MinIO 功能。play 是一个运行最新稳定版 MinIO 服务器的公共 MinIO 集群。上传到 play 的任何文件都应视为公共且不受保护的。有关连接到 play 的更多信息,请参阅 MinIO 控制台 play 登录。
快速入门:适用于 Kubernetes 的 MinIO
此过程将单节点单驱动器 MinIO 服务器部署到 Kubernetes 上,以便早期开发和评估 MinIO 对象存储及其与 S3 兼容的 API 层。
使用 MinIO 运算符 在 Kubernetes 上部署和管理生产就绪的 MinIO 租户。
先决条件
- 现有的 Kubernetes 部署,其中至少一个工作节点具有本地连接的驱动器。 
- 配置为在目标 Kubernetes 部署上创建和访问资源的本地 - kubectl安装。
- 熟悉 Kubernetes 环境 
- 熟悉使用终端或 Shell 环境 
过程
- 下载 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.nodeSelector、- volumeMounts.name和- volumes字段以满足更具体的需要。
- 应用 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 
- 临时访问 MinIO S3 API 和控制台 - 使用 - kubectl port-forward命令将流量从 MinIO Pod 临时转发到本地机器- kubectl port-forward pod/minio 9000 9090 -n minio-dev - 该命令将 Pod 端口 - 9000和- 9090转发到本地机器上的匹配端口,并在 shell 中处于活动状态。- kubectl port-forward命令仅在 shell 会话处于活动状态时才有效。终止会话会关闭本地机器上的端口。- 注意 - 此过程的后续步骤假设 - kubectl port-forward命令处于活动状态。- 要配置对 Pod 的长期访问,请在 Kubernetes 中配置 Ingress 或类似的网络控制组件以路由进出 Pod 的流量。配置 Ingress 超出了本文档的范围。 
- 将您的浏览器连接到 MinIO 服务器 - 通过在本地机器上打开浏览器并导航到 - http://127.0.0.1:9001访问 MinIO 控制台。- 使用凭据 - minioadmin | minioadmin登录控制台。这些是默认的 root 用户 凭据。  - 您可以使用 MinIO 控制台执行一般管理任务,例如身份和访问管理、指标和日志监控或服务器配置。每个 MinIO 服务器都包含其自己的嵌入式 MinIO 控制台。   - 有关更多信息,请参阅 MinIO 控制台 文档。 
- (可选) 连接 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 
