適用於彈性 Kubernetes 服務的 MinIO 物件儲存
MinIO 是一個物件儲存解決方案,提供與 Amazon Web Services S3 相容的 API,並支援所有核心 S3 功能。MinIO 的設計可在任何地方部署 - 公有或私有雲、裸機基礎設施、協調環境和邊緣基礎設施。
本網站記錄在 Amazon 彈性 Kubernetes 服務 上,針對最新穩定版 MinIO Operator:6.0.4 的 MinIO 部署的操作、管理和開發。
MinIO 根據雙重授權 GNU Affero General Public License v3.0 和 MinIO 商業授權 發布。透過 AWS Marketplace 部署 MinIO 包括商業授權,以及透過 MinIO SUBNET 獲得 24/7 MinIO 支援的權限。
您可以開始使用 MinIO 主控台 和我們的 play
伺服器,網址為 https://play.min.io,來探索 MinIO 的功能。play
是一個執行最新穩定 MinIO 伺服器的公用 MinIO 叢集。任何上傳到 play
的檔案都應被視為公開且不受保護。如需更多關於連線到 play
的資訊,請參閱 MinIO 主控台 play 登入。
快速入門:適用於 Kubernetes 的 MinIO
此程序會將單節點單磁碟機 MinIO 伺服器部署到 Kubernetes 上,以供早期開發和評估 MinIO 物件儲存及其 S3 相容 API 層。
使用 MinIO Operator 來部署和管理 Kubernetes 上已準備好生產的 MinIO 租戶。
必要條件
現有的 Kubernetes 部署,其中至少有一個 Worker 節點具有本機連接的磁碟機。
本機已安裝並設定
kubectl
,可用於在目標 Kubernetes 部署上建立和存取資源。熟悉 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
此命令會在 shell 中活動時,將 Pod 連接埠
9000
和9090
轉送到本機上相符的連接埠。kubectl port-forward
命令僅在 shell 工作階段中活動時才會運作。終止工作階段會關閉本機上的連接埠。注意
此步驟的後續步驟假設
kubectl port-forward
命令處於活動狀態。若要設定對 Pod 的長期存取權,請在 Kubernetes 中設定 Ingress 或類似的網路控制元件,以路由進出 Pod 的流量。設定 Ingress 超出本文件範圍。
將您的瀏覽器連線到 MinIO 伺服器
在您的本機上開啟瀏覽器,並瀏覽至
http://127.0.0.1:9001
,以存取 MinIO 主控台。使用憑證
minioadmin | minioadmin
登入主控台。這些是預設的根使用者憑證。您可以使用 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