适用于 Azure Kubernetes 服务的 MinIO 对象存储
MinIO 是一种对象存储解决方案,它提供与 Amazon Web Services S3 兼容的 API 并支持所有核心 S3 功能。MinIO 旨在部署在任何地方 - 公有云或私有云、裸机基础设施、编排环境和边缘基础设施。
本网站记录了在Azure Kubernetes Engine上部署 MinIO 的操作、管理和开发,适用于 MinIO 运算符的最新稳定版本:6.0.4。
MinIO 在双重许可下发布GNU Affero 通用公共许可证 v3.0 和MinIO 商业许可证。通过AKS Marketplace部署 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
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