適用於 Google Kubernetes Engine 的 MinIO 物件儲存
MinIO 是一種物件儲存解決方案,提供與 Amazon Web Services S3 相容的 API,並支援所有核心 S3 功能。MinIO 旨在部署在任何地方 - 公有雲或私有雲、裸機基礎架構、協調環境和邊緣基礎架構。
本網站記錄在 Google Kubernetes Engine 上 MinIO 部署的運作、管理和開發,適用於最新穩定版本的 MinIO Operator:6.0.4。
MinIO 在雙重授權 GNU Affero General Public License v3.0 和 MinIO 商業授權下發佈。透過 GKE 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 節點具有本機連接的磁碟機。
設定為在目標 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
,以及一個使用 Worker 節點上磁碟機或磁碟區來服務資料的 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
,以及一個使用 Worker 節點上磁碟機或磁碟區來服務資料的 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 Client
如果您的本機已
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