Expand an AIStor Deployment on Kubernetes
The following procedure adds a server pool to an existing AIStor cluster running on Kubernetes infrastructure.
Each pool expands the total available storage capacity of the cluster with new nodes and persistent volumes while maintaining the overall availability of the cluster.
Pay particular attention to the parity (EC:M) value of the existing cluster and the new pool.
MinIO strongly recommends seeking an architecture review from MinIO Engineering through SUBNET to analyze potential performance impacts before committing to a new pool for your cluster.
All commands provided below use example values. Replace these values with those appropriate for your cluster.
-
Retrieve and review the existing object store Helm chart.
The
objectStore.poolskey describes the current cluster’s topology and pool configuration. Each element in thepoolsarray describes a single server pool in the AIStor cluster.Review this file and take a timestamped backup as
object-store-NAME-values.yaml.TIMESTAMP-bakbefore proceeding. -
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.
-
Modify the
objectStore.poolsarray with the new pool.The following example adds a new pool
pool-1to an existing cluster with a single poolpool-0. Each pool uses anodeSelectorto restrict the cluster to 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 -
Deploy the chart with the updated values.
Use the
helm upgradecommand to upgrade the chart with the newvalues.yaml:helm upgrade primary-object-store minio/aistor-objectstore \ -n aistor-primary-object-store \ -f primary-object-store-values.yamlYou can use
kubectl get events -n NAMESPACE --watchto monitor the progress of expansion.Once the expansion completes, use the
mc admin infocommand to validate the expanded topology and status.
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.