用于弹性 Kubernetes 服务的 MinIO 对象存储
MinIO 是一种对象存储解决方案,它提供与 Amazon Web Services S3 兼容的 API,并支持所有核心 S3 功能。MinIO 旨在部署在任何地方 - 公有云或私有云、裸机基础设施、编排环境和边缘基础设施。
本网站记录了在 Amazon 弹性 Kubernetes 服务 上部署 MinIO 的最新稳定版本的 MinIO 运算符:6.0.4 的操作、管理和开发。
MinIO 在双重许可下发布 GNU Affero 通用公共许可证 v3.0 和 MinIO 商业许可证。通过 AWS Marketplace 部署 MinIO 包含商业许可证,并可通过 MinIO SUBNET 访问 MinIO 的 24/7 支持。
您可以使用 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
配置并将对象部署到 Kuberneteskubectl 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 和从 Pod 路由流量。配置 Ingress 超出了本文档的范围。
将您的浏览器连接到 MinIO 服务器
通过在本地机器上打开浏览器并导航到
http://127.0.0.1:9001
访问 MinIO 控制台。使用凭据
minioadmin | minioadmin
登录控制台。这些是默认的 root 用户 凭据。您可以使用 MinIO 控制台执行一般管理任务,例如身份和访问管理、指标和日志监控或服务器配置。每个 MinIO 服务器都包含其自己的嵌入式 MinIO 控制台。
有关更多信息,请参阅 MinIO 控制台 文档。
(可选)连接 MinIO 客户端
如果您的本地机器已安装
mc
installed,请使用mc alias set
命令对 MinIO 部署进行身份验证和连接mc alias set k8s-minio-dev http://127.0.0.1:9000 minioadmin minioadmin mc admin info k8s-minio-dev