You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何排查ArgoCD中MinIO Tenant持续处于Progressing状态的问题

问题:ArgoCD部署MinIO Tenant后卡在Progressing状态(已Synced)
  • 已通过ArgoCD在K8s集群部署MinIO Tenant,应用显示Synced但一直卡在Progressing状态
  • 仅Tenant资源被标记为Progressing,无相关事件,同步后无差异
  • ArgoCD Pod日志、MinIO Tenant Pod日志均无异常
  • Tenant功能正常,所有组件已正确部署

排查步骤

1. 检查MinIO Operator状态

  • 确认MinIO Operator Pod是否正常运行:kubectl get pods -n minio-operator
  • 查看Operator日志,排查Tenant相关处理异常:kubectl logs -n minio-operator <operator-pod-name>

2. 深入检查Tenant资源状态

  • 查看Tenant资源的详细状态,重点关注status字段:kubectl get tenant minio-observability-staging -o yaml
    • 检查status.phase是否为Ready,以及status.pools下每个节点的状态是否正常
    • 确认是否存在未完成的初始化步骤(如bucket创建、证书同步等)

3. 验证依赖资源完整性

  • 检查配置中指定的Secret minio-observability-staging-env-configuration是否存在且格式正确:kubectl describe secret minio-observability-staging-env-configuration
  • 确认Ingress关联的TLS Secret是否已被cert-manager正确签发:kubectl get secret minio-tenant-observability-general-tls minio-tenant-observability-con-general-tls
  • 检查存储类ext-nas-storage-class是否可用,PV是否正常绑定:kubectl get pv,pvc -l app=minio-observability-staging

4. 检查ArgoCD的健康检查配置

ArgoCD默认可能未适配MinIO Tenant自定义资源的健康判断逻辑,需手动配置:

  • 编辑ArgoCD的ConfigMap添加自定义健康检查规则:
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: argocd-cm
      namespace: argocd
    data:
      resource.customizations.health.tenants.minio.min.io: |
        hs = {
          status = "Healthy",
          message = ""
        }
        if obj.status ~= nil then
          if obj.status.phase == "Ready" then
            hs.status = "Healthy"
            hs.message = "Tenant is ready"
          else
            hs.status = "Progressing"
            hs.message = obj.status.phase
          end
        else
          hs.status = "Progressing"
          hs.message = "Waiting for status"
        end
        return hs
    
  • 应用配置后重启ArgoCD Server:kubectl rollout restart deployment argocd-server -n argocd

5. 检查Helm Chart版本兼容性

  • 确认MinIO Tenant Chart(v5.0.6)与集群中运行的MinIO Operator版本是否兼容
  • 排查Chart文档,确认是否存在特定Kubernetes版本要求或已知的Progressing状态问题

提供的Helm Chart配置

apiVersion: v2
name: minio-observability-storage
home: https://min.io
icon: https://min.io/resources/img/logo/MINIO_wordmark.png
version: 0.0.0
appVersion: 0.0.0
type: application
description: A Helm chart for MinIO tenent

dependencies:
  - name: tenant
    repository: https://operator.min.io/
    version: 5.0.6

提供的Values配置

tenant:
  tenant:
    # Tenant name
    name: minio-observability-staging
    ## Secret name that contains additional environment variable configurations.
    ## The secret is expected to have a key named config.env containing environment variables exports.
    configuration:
      name: minio-observability-staging-env-configuration
    pools:
      - servers: 4
        name: pool-0
        volumesPerServer: 4
        ## size specifies the capacity per volume
        size: 30Gi
        ## storageClass specifies the storage class name to be used for this pool
        storageClassName: ext-nas-storage-class
        securityContext:
          runAsUser: 100
          runAsGroup: 1000
          runAsNonRoot: true
          fsGroup: 1000
    metrics:
      enabled: true
      port: 9000
      protocol: http
    features:
      bucketDNS: true
      domains:
        console: https://s3-console.staging.domain.io
        minio:
          - https://s3.staging.domain.io
    buckets:
      - name: observability-staging
        region: eu-west-1
    ## exposeServices defines the exposure of the MinIO object storage and Console services.
    exposeServices:

    # Tenant scrape configuration will be added to prometheus managed by the prometheus-operator.
    prometheusOperator: true

  ingress:
    api:
      enabled: true
      labels: {}
      annotations:
        cert-manager.io/cluster-issuer: letsencrypt-staging
        kubernetes.io/ingress.class: "nginx"
        nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
        nginx.ingress.kubernetes.io/rewrite-target: /
        nginx.ingress.kubernetes.io/proxy-body-size: "0"
        nginx.ingress.kubernetes.io/server-snippet: |
          client_max_body_size 0;
        nginx.ingress.kubernetes.io/configuration-snippet: |
          chunked_transfer_encoding off;
      tls:
        - secretName: minio-tenant-observability-general-tls
          hosts:
            - s3.staging.domain.io
      host: s3.staging.domain.io
      path: /
      pathType: Prefix

    console:
      enabled: true
      labels: {}
      annotations:
        cert-manager.io/cluster-issuer: letsencrypt-staging
        kubernetes.io/ingress.class: "nginx"
        nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
        nginx.ingress.kubernetes.io/rewrite-target: /
        nginx.ingress.kubernetes.io/proxy-body-size: "0"
        nginx.ingress.kubernetes.io/server-snippet: |
          client_max_body_size 0;
        nginx.ingress.kubernetes.io/configuration-snippet: |
          chunked_transfer_encoding off;
      tls:
        - secretName: minio-tenant-observability-con-general-tls
          hosts:
            - s3-console.staging.domain.io
      host: s3-console.staging.domain.io
      path: /
      pathType: Prefix

内容的提问来源于stack exchange,提问作者Phil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 03:23:12