適用於 Kubernetes 的 MinIO 物件儲存
MinIO 是一種物件儲存解決方案,提供與 Amazon Web Services S3 相容的 API,並支援所有核心 S3 功能。MinIO 的建置旨在部署於任何地方 - 公有或私有雲、裸機基礎架構、協調環境和邊緣基礎架構。
本網站記錄了適用於 Kubernetes 平台上 MinIO 部署的作業、管理和開發,適用於 MinIO Operator 的最新穩定版本:6.0.4。
MinIO 以雙重授權發布 GNU Affero General Public License 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 Operator 在 Kubernetes 上部署和管理生產就緒的 MinIO 租戶。
先決條件
現有的 Kubernetes 部署,其中至少一個工作節點具有本機附加的磁碟機。
已設定的本機
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,使用 Worker 節點上的磁碟機或磁碟區來提供數據
選擇 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,使用 Worker 節點上的磁碟機或磁碟區來提供數據
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 的流量。設定 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