Expand an AIStor Deployment on Kubernetes

The following procedure adds a server pool to an existing AIStor deployment running on Kubernetes infrastructure. Each pool expands the total available storage capacity of the cluster while maintaining the overall availability of the cluster.

All commands provided below use example values. Replace these values with those appropriate for your deployment.

  1. Retrieve and review the existing object store Helm chart.

    The objectStore.pools key describes the current deployment topology and pool configuration. Each element in the pools array describes a single server pool in the AIStor deployment.

    Review this file and take a timestamped backup as object-store-NAME-values.yaml.TIMESTAMP-bak before proceeding.

  2. Prepare new worker nodes.

    Add or configure the new worker nodes for supporting AIStor. Ensure the worker nodes have the necessary storage and compute resources for supporting the target architecture.

  3. Modify the objectStore.pools array with the new pool

    The following example adds a new pool pool-1 to an existing deployment with a single pool pool-0. Each pool uses a nodeSelector to restrict deployment onto specific worker nodes based on label:

    objectStore:
       name: primary-object-store # name of the AIStor Server
       pools:
       - name: pool-0
         servers: 8 # Number of servers/pods to deploy
         volumesPerServer: 8 # Number of Persistent Volumes per Server/Pod
         size: 2Ti # Size of each PV
         storageClassName: directpv-min-io # Storage Class assigned to each PV
         nodeSelector: {
           aistor-label: "primary-object-store-pool-0"
    
         }
       - name: pool-1
         servers: 32
         volumesPerServer: 32
         size: 2Ti
         storageClassName: directpv-min-io
         nodeSelector: {
           aistor-label: "primary-object-store-pool-1"
         }
       services:
          minio:
             serviceType: NodePort
             nodePort: 31000 # Select an available NodePort in the supported range of 30000-32767
    
  4. Deploy the chart with the updated values

    Use the helm upgrade command to upgrade the chart with the new values.yaml:

    helm upgrade primary-object-store minio/aistor-object-store \
      -n aistor-primary-object-store \
      -f primary-object-store-values.yaml
    

    You can use kubectl get events -n NAMESPACE --watch to monitor the progress of expansion.

    Once the expansion completes, use the mc admin info command to validate the expanded topology and status.

  5. Next steps

    After validating cluster health and expanded storage, you can update any load balancers, reverse proxies, or other network management tools with the new hostnames of the added server pool. This ensures that incoming connections balance appropriately across the expanded topology.

All rights reserved 2024-Present, MinIO, Inc.