文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

升级旧版 MinIO Operator

MinIO 支持以下针对旧版本 MinIO Operator 的升级路径:

Current Version

支持的升级目标

5.0.15 或更高版本

操作员

5.0.0 到 5.0.14

5.0.15

4.2.3 到 4.5.7

4.5.8

4.0.0 至 4.2.2

4.2.3

3.X.X

4.2.2

要从 Operator 升级到 OPERATOR 从 4.5.7 或更早版本,您必须首先升级到 4.5.8 版本,然后升级到 5.0.15。 根据您当前的版本,可能需要执行一次或多次中间升级才能达到 v4.5.8。

升级到 5.0.15 后,请参阅升级 MinIO Operator升级到最新版本。

升级 MinIO Operator 4.5.8 及更高版本至 5.0.15

前提条件

此过程需要以下条件:

  • 您有一个现有的 MinIO Operator 部署正在运行 4.5.8 或更高版本

  • 您的 Kubernetes 集群运行 1.21.0 或更高版本

  • 您的本地主机有kubectl已安装并配置了访问 Kubernetes 集群的权限

此过程将 MinIO Operator 从任何 4.5.8 或更高版本升级到 5.0.15

Tenant Custom Resource Definition Changes

以下更改适用于 Operator v5.0.0 或更高版本:

  • The.spec.s3field 被替换为.spec.features字段。

  • The.spec.credsSecretfield 被替换为.spec.configuration字段。

    The.spec.credsSecret应该包含所有包含敏感信息且不应显示的 MinIO 部署环境变量.spec.env此更改会影响租户CRD并且仅影响直接编辑租户 YAML 的用户,例如通过 Helm 或 Kustomize 进行编辑的用户。

  • Both the日志搜索 API (.spec.log) 和Prometheus (.spec.prometheus) 部署已被移除。 但是,现有的部署将继续作为独立的部署/有状态集运行,与租户 CR 没有连接。 删除租户CRDdoes级联到日志或 Prometheus 部署。

    重要

    MinIO 建议您创建一个 yaml 文件来管理这些部署。

日志搜索和 Prometheus

Operator 的最新版本已从包含的 Operator 工具中移除了 Log Search 和 Prometheus。 以下步骤将备份现有的 yaml 文件,执行一些清理操作,并提供继续使用其中任一或全部功能的步骤。

  1. 备份 Prometheus 和 Log Search 的 yaml 文件。

    export TENANT_NAME=myminio
    export NAMESPACE=mynamespace
    kubectl -n $NAMESPACE get secret $TENANT_NAME-log-secret -o yaml > $TENANT_NAME-log-secret.yaml
    kubectl -n $NAMESPACE get cm $TENANT_NAME-prometheus-config-map -o yaml > $TENANT_NAME-prometheus-config-map.yaml
    kubectl -n $NAMESPACE get sts $TENANT_NAME-prometheus -o yaml > $TENANT_NAME-prometheus.yaml
    kubectl -n $NAMESPACE get sts $TENANT_NAME-log -o yaml > $TENANT_NAME-log.yaml
    kubectl -n $NAMESPACE get deployment $TENANT_NAME-log-search-api -o yaml > $TENANT_NAME-log-search-api.yaml
    kubectl -n $NAMESPACE get svc $TENANT_NAME-log-hl-svc -o yaml > $TENANT_NAME-log-hl-svc.yaml
    kubectl -n $NAMESPACE get svc $TENANT_NAME-log-search-api -o yaml > $TENANT_NAME-log-search-api-svc.yaml
    kubectl -n $NAMESPACE get svc $TENANT_NAME-prometheus-hl-svc -o yaml > $TENANT_NAME-prometheus-hl-svc.yaml
    
    • 替换myminio使用您正在升级的运营商部署中的租户名称。

    • 替换mynamespace使用您正在升级的 Operator 部署上的租户命名空间。

    对每个租户重复此操作。

  2. 移除.metadata.ownerReferences所有租户的所有备份文件。

  3. (可选)要继续使用日志搜索 API 和 Prometheus,请将以下变量添加到租户的 yaml 规范文件中,位置在.spec.env

    使用以下命令编辑租户:

    kubectl edit tenants <TENANT-NAME> -n <TENANT-NAMESPACE>
    
    • 替换<TENANT-NAME>要修改的租户名称。

    • 替换<TENANT-NAMESPACE>使用您正在修改的租户的命名空间。

    在以下位置添加以下值.spec.env在文件中:

    - name: MINIO_LOG_QUERY_AUTH_TOKEN
      valueFrom:
        secretKeyRef:
          key: MINIO_LOG_QUERY_AUTH_TOKEN
          name: <TENANT_NAME>-log-secret
    - name: MINIO_LOG_QUERY_URL
      value: http://<TENANT_NAME>-log-search-api:8080
    - name: MINIO_PROMETHEUS_JOB_ID
      value: minio-job
    - name: MINIO_PROMETHEUS_URL
      value: http://<TENANT_NAME>-prometheus-hl-svc:9001
    
    • 替换<TENANT_NAME>name or value包含您租户名称的行。

过程

以下过程使用 Kustomize 升级 MinIO Operator。

对于使用 MinIO Kubernetes 插件安装的 Operator 5.0.1 到 5.0.14 版本,请按照以下 Kustomize 说明升级到 5.0.15 或更高版本。 如果您使用以下方式安装了 OperatorHelm, 使用使用 Helm 升级改为使用说明。

  1. (可选)将每个 MinIO Tenant 更新至最新的稳定版 MinIO 版本。

    定期升级MinIO可确保您的租户拥有最新功能和性能改进。 在应用到生产租户之前,请在较低环境(如开发或QA租户)中测试升级。 参见升级 MinIO 租户有关升级 MinIO 租户的流程说明。

  2. 验证现有的 Operator 安装。 使用kubectl get all -n minio-operator验证所有 Operator pod 和服务的健康状态与运行状况。

    如果您将 Operator 安装到了自定义命名空间,请将该命名空间指定为-n <NAMESPACE>.

    You can verify the currently installed Operator version by retrieving the object specification for an operator pod in the namespace. The following example uses thejq从...中筛选必要信息的工具kubectl:

    kubectl get pod -l 'name=minio-operator' -n minio-operator -o json | jq '.items[0].spec.containers'
    

    输出类似于以下内容:

    {
       "env": [
          {
             "name": "CLUSTER_DOMAIN",
             "value": "cluster.local"
          }
       ],
       "image": "minio/operator:v5.0.x",
       "imagePullPolicy": "IfNotPresent",
       "name": "minio-operator"
    }
    

    如果您的本地主机没有jq安装好实用工具后,您可以运行命令的第一部分并定位spec.containers输出部分。

  3. 使用 Kustomize 升级 Operator

    以下命令将 Operator 升级到 5.0.15 版本:

    kubectl apply -k github.com/minio/operator/?ref=v5.0.15
    

    在下面的示例输出中,configured行末的 表示此处应用了来自更新后 CRD 的新变更:

    namespace/minio-operator configured
    customresourcedefinition.apiextensions.k8s.io/miniojobs.job.min.io configured
    customresourcedefinition.apiextensions.k8s.io/policybindings.sts.min.io configured
    customresourcedefinition.apiextensions.k8s.io/tenants.minio.min.io configured
    serviceaccount/console-sa unchanged
    serviceaccount/minio-operator unchanged
    clusterrole.rbac.authorization.k8s.io/console-sa-role unchanged
    clusterrole.rbac.authorization.k8s.io/minio-operator-role unchanged
    clusterrolebinding.rbac.authorization.k8s.io/console-sa-binding unchanged
    clusterrolebinding.rbac.authorization.k8s.io/minio-operator-binding unchanged
    configmap/console-env unchanged
    secret/console-sa-secret configured
    service/console unchanged
    service/operator unchanged
    service/sts unchanged
    deployment.apps/console configured
    deployment.apps/minio-operator configured
    
  4. 验证 Operator 升级

    您可以使用相同的命令检查新的 Operator 版本kubectl之前使用的命令:

    kubectl get pod -l 'name=minio-operator' -n minio-operator -o json | jq '.items[0].spec.containers'
    

以下过程使用 Helm 升级现有的 MinIO Operator 安装。

如果您使用 Kustomize 安装了 Operator,请使用使用 Kustomize 升级改为使用说明。

  1. (可选)将每个 MinIO Tenant 更新至最新的稳定版 MinIO 版本。

    定期升级MinIO可确保您的租户拥有最新功能和性能改进。 在应用到生产租户之前,请在较低环境(如开发或QA租户)中测试升级。 参见升级 MinIO 租户有关升级 MinIO 租户的流程说明。

  2. 验证现有的 Operator 安装。

    使用kubectl get all -n minio-operator验证所有 Operator pod 和服务的健康状态与运行状况。

    如果您将 Operator 安装到了自定义命名空间,请将该命名空间指定为-n <NAMESPACE>.

    使用helm list查看命名空间中已安装图表的命令:

    helm list -n minio-operator
    

    结果应类似于以下内容:

    NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
    operator        minio-operator  1               2023-11-01 15:49:54.539724775 -0400 EDT deployed        operator-5.0.x v5.0.x
    

    您也可以直接检查 operator pod 来确定已安装的版本。 以下示例使用jq从...中筛选必要信息的工具kubectl:

    kubectl get pod -l 'name=minio-operator' -n minio-operator -o json | jq '.items[0].spec.containers'
    

    输出类似于以下内容:

    {
       "env": [
          {
             "name": "CLUSTER_DOMAIN",
             "value": "cluster.local"
          }
       ],
       "image": "minio/operator:v5.0.x",
       "imagePullPolicy": "IfNotPresent",
       "name": "minio-operator"
    }
    

    如果您的本地主机没有jq安装好实用工具后,您可以运行命令的第一部分并定位spec.containers输出部分。

  3. 更新 Operator 代码库

    使用helm repo update minio-operator要更新 MinIO Operator 仓库。 如果您为 MinIO Operator 仓库设置了不同的别名,请在命令中指定该别名而不是minio-operator您可以使用helm repo list查看您已安装的代码库。

    使用helm search要检查更新 Operator 仓库后的最新可用 Chart 版本:

    helm search repo minio-operator
    

    响应应类似于以下内容:

    NAME                            CHART VERSION   APP VERSION     DESCRIPTION
    minio-operator/minio-operator   4.3.7           v4.3.7          A Helm chart for MinIO Operator
    minio-operator/operator         OPERATOR          vOPERATOR         A Helm chart for MinIO Operator
    minio-operator/tenant           OPERATOR          vOPERATOR         A Helm chart for MinIO Operator
    

    Theminio-operator/minio-operator是一个遗留图表,应该在正常情况下安装。

  4. 运行helm upgrade

    Helm 使用最新 chart 升级 MinIO Operator:

    helm upgrade -n minio-operator \
      operator minio-operator/operator
    

    如果您将 MinIO Operator 安装到了不同的命名空间,请在其中指定-n论点。

    如果您使用了不同的安装名称operator将上面的值替换为安装名称。

    命令执行结果应返回成功,并伴随版本号的提升REVISION值。

  5. 验证 Operator 升级

    您可以使用相同的命令检查新的 Operator 版本kubectl之前使用的命令:

    kubectl get pod -l 'name=minio-operator' -n minio-operator -o json | jq '.items[0].spec.containers'
    

升级 MinIO Operator 4.2.3 至 4.5.7 到 4.5.8 版本

前提条件

此过程需要以下条件:

  • 您有一个现有的 MinIO Operator 部署,运行版本为 4.2.3 到 4.5.7。

  • 您的 Kubernetes 集群运行 1.19.0 或更高版本

  • 您的本地主机有kubectl已安装并配置了访问 Kubernetes 集群的权限

过程

该过程将 MinIO Operator 从 4.2.3 到 4.5.7 的版本升级到 4.5.8 版本。 之后您可以从 4.5.8 版本升级到 5.0.15 版本。

  1. (可选)将每个 MinIO Tenant 更新至最新的稳定版 MinIO 版本。

    定期升级MinIO可确保您的租户拥有最新的功能和性能改进。

    在将升级应用到生产租户之前,请在较低环境(如开发或QA租户)中测试升级。

    升级 MinIO 租户有关升级 MinIO 租户的流程说明。

  2. 验证现有的 Operator 安装。

    使用kubectl get all -n minio-operator验证所有 Operator pod 和服务的健康状态与运行状况。

    如果您将 Operator 安装到了自定义命名空间,请将该命名空间指定为-n <NAMESPACE>.

    You can verify the currently installed Operator version by retrieving the object specification for an operator pod in the namespace. The following example uses thejq从...中筛选必要信息的工具kubectl:

    kubectl get pod -l 'name=minio-operator' -n minio-operator -o json | jq '.items[0].spec.containers'
    

    输出类似于以下内容:

    {
       "env": [
          {
             "name": "CLUSTER_DOMAIN",
             "value": "cluster.local"
          }
       ],
       "image": "minio/operator:v4.5.1",
       "imagePullPolicy": "IfNotPresent",
       "name": "minio-operator"
    }
    
  3. 下载 MinIO Kubernetes 插件的最新稳定版本

    您可以使用 Kubernetes Krew 插件管理器安装 MinIO 插件,也可以通过下载插件二进制文件并手动安装到本地主机来完成安装:

    Krew 是一个kubectl由...开发的插件管理器Kubernetes SIG CLI 小组查看krew 安装文档有关具体说明,请参考相关文档。 您可以在 Linux、macOS 和 Windows 操作系统上使用 Krew 插件。

    您可以使用 Krew 安装 MinIOkubectl使用以下命令安装插件:

    kubectl krew update
    kubectl krew install minio
    

    如果你想使用 Krew 更新 MinIO 插件,请使用以下命令:

    kubectl krew upgrade minio
    

    您可以下载 MinIOkubectl将插件添加到您的本地系统路径。kubectlCLI 会自动发现并运行兼容的插件。

    以下代码下载最新版本的 MinIO Kubernetes 插件并将其安装到系统路径:

    curl https://github.com/minio/operator/releases/download/v5.0.14/kubectl-minio_5.0.14_linux_amd64 -o kubectl-minio
    chmod +x kubectl-minio
    mv kubectl-minio /usr/local/bin/
    

    Themv上述命令可能需要sudo根据已认证用户的权限进行升级。

    运行以下命令来验证插件的安装:

    kubectl minio version
    

    输出应显示 Operator 版本为 5.0.14。

    您可以下载 MinIOkubectl将插件添加到您的本地系统路径。kubectlCLI 会自动发现并运行兼容的插件。

    以下 PowerShell 命令将下载最新版本的 MinIO Kubernetes 插件并将其安装到系统路径中:

    Invoke-WebRequest -Uri "https://github.com/minio/operator/releases/download/v5.0.14/kubectl-minio_5.0.14_windows_amd64.exe" -OutFile "C:\kubectl-plugins\kubectl-minio.exe"
    

    确保插件文件夹的路径已包含在 Windows PATH 环境变量中。

    运行以下命令来验证插件的安装:

    kubectl minio version
    

    输出应显示 Operator 版本为 5.0.14。

  4. 运行初始化命令以升级 Operator

    使用kubectl minio init升级现有 MinIO Operator 安装的命令

    kubectl minio init
    
  5. 验证 Operator 升级

    您可以通过使用前一步骤查看 Operator Pod 的对象规范来检查 Operator 版本。

升级 MinIO Operator 4.0.0 至 4.2.2 到 4.2.3 版本

前提条件

此过程假设:

  • 您有一个现有的 MinIO Operator 部署,运行着从 4.0.0 到 4.2.2 的任何版本。

  • 您的 Kubernetes 集群运行 1.19.0 或更高版本

  • 您的本地主机有kubectl已安装并配置了访问 Kubernetes 集群的权限

过程

此过程涵盖了将运行 4.0.0 至 4.2.2 任何版本的 MinIO Operator 部署升级到 4.2.3 的必要步骤。 您随后可以执行升级 MinIO Operator 5.0.15 到 OPERATOR完成升级到 OPERATOR。

4.0.0 - 4.2.2 版本安装包没有直接升级到 OPERATOR 的路径。

  1. (可选)将每个 MinIO Tenant 更新至最新的稳定版 MinIO 版本。

    定期升级 MinIO 可确保您的租户获得最新功能和性能改进。 在应用到生产租户之前,请在较低环境(如开发或 QA 租户)中测试升级。

    升级 MinIO 租户有关升级 MinIO 租户的流程说明。

  2. 检查每个租户池的安全上下文

    使用以下命令验证每个受管 MinIO 租户的规范:

    kubectl get tenants <TENANT-NAME> -n <TENANT-NAMESPACE> -o yaml
    

    如果spec.pools.securityContext对于租户,如果字段不存在,租户 Pod 可能以 root 身份运行。

    作为 4.2.3 及后续版本系列的一部分,Pod 运行时将强制执行受限权限集,这是 Operator 升级的一部分。 然而,以 root 身份运行 Pod 的租户可能因安全上下文不匹配而无法启动。 您可以为这些租户设置明确的安全上下文,允许 Pod 以 root 身份运行:

    securityContext:
      runAsUser: 0
      runAsGroup: 0
      runAsNonRoot: false
      fsGroup: 0
    

    您可以使用以下命令编辑租户并应用更改:

    kubectl edit tenants <TENANT-NAME> -n <TENANT-NAMESPACE>
    # Modify the securityContext as needed
    

    Pod 安全标准有关 Kubernetes 安全上下文的更多信息。

  3. 升级到 Operator 4.2.3

    下载 MinIO Kubernetes 插件 4.2.3 并使用它来升级 Operator。 打开https://github.com/minio/operator/releases/tag/v4.2.3在浏览器中打开并下载与您本地主机操作系统对应的二进制文件。

    例如,运行 Intel 或 AMD 处理器的 Linux 主机可以执行以下命令:

    wget https://github.com/minio/operator/releases/download/v4.2.3/kubectl-minio_4.2.3_linux_amd64 -o kubectl-minio_4.2.3
    chmod +x kubectl-minio_4.2.3
    ./kubectl-minio_4.2.3 init
    
  4. 验证所有租户和运营商 Pod

    检查 Operator 和 MinIO Tenant 命名空间,确保所有 Pod 和服务都成功启动。

    例如:

    kubectl get all -n minio-operator
    kubectl get pods -l "v1.min.io/tenant" --all-namespaces
    
  5. 升级到 OPERATOR

    遵循升级 MinIO Operator 5.0.15 到 OPERATOR升级到最新稳定版 Operator 版本的程序。

升级 MinIO Operator 3.0.0 至 3.0.29 到 4.2.2

前提条件

此过程假设:

  • 您有一个现有的 MinIO Operator 部署正在运行 3.X.X 版本

  • 您的 Kubernetes 集群运行 1.19.0 或更高版本

  • 您的本地主机有kubectl已安装并配置了访问 Kubernetes 集群的权限

过程

此过程涵盖了将运行从3.0.0到3.2.9任何版本的MinIO Operator部署升级到4.2.2的必要步骤。 然后您可以执行升级 MinIO Operator 4.0.0 至 4.2.2 到 4.2.3 版本,接着是升级 MinIO Operator 5.0.15 到 OPERATOR.

从 3.X.X 系列安装版本到 OPERATOR 没有直接升级路径。

  1. (可选)将每个 MinIO 租户更新至最新的稳定版 MinIO 版本。

    定期升级MinIO可确保您的租户拥有最新的功能和性能改进。

    在将升级应用到生产租户之前,请在较低环境(如开发或QA租户)中测试升级。

    升级 MinIO 租户有关升级 MinIO 租户的流程说明。

  2. 验证租户tenant.spec.zones价值观

    使用以下命令验证每个受管 MinIO 租户的规范:

    kubectl get tenants <TENANT-NAME> -n <TENANT-NAMESPACE> -o yaml
    
    • 确保每个tenant.spec.zoneselement 有一个namefield 设置为该区域的名称。 每个区域在该租户下必须具有唯一的名称,例如zone-0zone-1分别对应第一和第二区域。

    • 确保每个tenant.spec.zones有一个明确的securityContext描述 Pod 在集群中运行时所使用的权限集合。

    以下示例租户 YAML 片段设置了指定字段:

    image: "minio/minio:$(LATEST-VERSION)"
    ...
    zones:
    - servers: 4
      name: "zone-0"
      volumesPerServer: 4
      volumeClaimTemplate:
         metadata:
         name: data
         spec:
         accessModes:
            - ReadWriteOnce
         resources:
            requests:
               storage: 1Ti
      securityContext:
         runAsUser: 0
         runAsGroup: 0
         runAsNonRoot: false
         fsGroup: 0
    - servers: 4
      name: "zone-1"
      volumesPerServer: 4
      volumeClaimTemplate:
         metadata:
         name: data
         spec:
         accessModes:
            - ReadWriteOnce
         resources:
            requests:
               storage: 1Ti
      securityContext:
         runAsUser: 0
         runAsGroup: 0
         runAsNonRoot: false
         fsGroup: 0
    

    您可以使用以下命令编辑租户并应用更改:

    kubectl edit tenants <TENANT-NAME> -n <TENANT-NAMESPACE>
    
  3. 升级到 Operator 4.2.2

    下载 MinIO Kubernetes 插件 4.2.2 并使用它来升级 Operator。 打开https://github.com/minio/operator/releases/tag/v4.2.2在浏览器中打开并下载与您本地主机操作系统对应的二进制文件。 例如,运行Intel或AMD处理器的Linux主机可以执行以下命令:

    wget https://github.com/minio/operator/releases/download/v4.2.3/kubectl-minio_4.2.2_linux_amd64 -o kubectl-minio_4.2.2
    chmod +x kubectl-minio_4.2.2
    
    ./kubectl-minio_4.2.2 init
    
  4. 验证所有租户和运营商 Pod

    检查 Operator 和 MinIO Tenant 命名空间,确保所有 Pod 和服务都成功启动。

    例如:

    kubectl get all -n minio-operator
    
    kubectl get pods -l "v1.min.io/tenant" --all-namespaces
    
  5. 升级到 4.2.3

    遵循升级 MinIO Operator 4.0.0 至 4.2.2 到 4.2.3 版本升级到 Operator 4.2.3 的程序。 然后您可以升级到 OPERATOR。