文件

適用於 OpenShift 的 MinIO 物件儲存

MinIO 是一種物件儲存解決方案,提供與 Amazon Web Services S3 相容的 API,並支援所有核心 S3 功能。MinIO 旨在部署在任何地方 - 公有或私有雲、裸機基礎架構、協調環境和邊緣基礎架構。

本網站記錄透過 Red Hat® OpenShift® Container Platform 4.7+ 在 OpenShift 4.7+ 上部署 MinIO 的操作、管理和開發,以取得 MinIO Operator 的最新穩定版本:6.0.4。

MinIO 以雙重授權方式發布 GNU Affero General Public License v3.0MinIO Commercial License。透過 MinIO SUBNET 註冊的部署使用商業授權,並包含 24/7 MinIO 支援的存取權。

您可以使用 MinIO 主控台 和我們位於 https://play.min.ioplay 伺服器開始探索 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 環境

程序

  1. 下載 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 Worker 節點上的本機磁碟機或資料夾。

    熟悉 Kubernetes 排程和卷宗佈建的使用者可以修改 spec.nodeSelectorvolumeMounts.namevolumes 欄位,以滿足更特定的需求。

  2. 套用 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
    
  3. 暫時存取 MinIO S3 API 和主控台

    使用 kubectl port-forward 命令,將流量從 MinIO Pod 暫時轉送到本機

    kubectl port-forward pod/minio 9000 9090 -n minio-dev
    

    當命令在 Shell 中處於作用中時,該命令會將 Pod 的連接埠 90009090 轉送到本機上相符的連接埠。kubectl port-forward 命令僅在 Shell 工作階段中處於作用中時才會運作。終止工作階段會關閉本機上的連接埠。

    注意

    此程序的下列步驟假設 kubectl port-forward 命令處於作用中。

    若要設定對 Pod 的長期存取,請在 Kubernetes 內設定 Ingress 或類似的網路控制元件,以將流量路由至 Pod 和從 Pod 路由流量。設定 Ingress 不在此文件的範圍內。

  4. 將您的瀏覽器連線至 MinIO 伺服器

    透過在本機上開啟瀏覽器,並導覽至 http://127.0.0.1:9001,來存取 MinIO 主控台

    使用憑證 minioadmin | minioadmin 登入主控台。這些是預設的 根使用者 憑證。

    MinIO Console displaying login screen

    您可以使用 MinIO 主控台來執行一般管理工作,例如身分與存取管理、指標和記錄監控,或伺服器設定。每個 MinIO 伺服器都包含其自己的內嵌 MinIO 主控台。

    MinIO Console displaying bucket start screen

    如需更多資訊,請參閱 MinIO 主控台 文件。

  5. (選用) 連線 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
    
    • 別名的名稱

    • MinIO 伺服器的主機名稱或 IP 位址和連接埠

    • MinIO 使用者的存取金鑰

    • MinIO 使用者的秘密金鑰

後續步驟