Node Maintenance

AIStor allows you to temporarily remove nodes from active service for planned maintenance operations. Removing nodes allows administrators to gracefully take nodes offline without disrupting cluster operations, similar to the cordon functionality in Kubernetes. A cordoned node finishes in-flight operations and marks itself as unavailable for any other operation. Use this to do hardware maintenance on a node, complete operating system updates, or perform troubleshooting.

AIStor cordoning on Kubernetes
In Kubernetes environments, the AIStor cordoning function applies to the Pod running the associated workload. It does not affect any other Pods or services running on the Kubernetes worker, and acts to ensure the scheduler does not reschedule that Pod during ongoing maintenance operations.

The following diagram illustrates the node state transitions during the maintenance workflow:

O n l i n e m c a d m i n m c m u c n a - c d a n o m d o r i m - d n i d o n r n c a o c i r o n d r o d n o n ( s R t D C e i r o s l a r t l i d a n o r c i n t o n D c e M r e r g r o d a e d d a m n s o i p u t n n l a a e e l r d t t ) e s

Cordon a node

The mc admin cordon command removes a node from active service. By default, the command initiates a graceful drain of existing connections before fully cordoning the node.

Replace ALIAS with your AIStor cluster alias and NODE with the target node address (for example, node1.example.com:9000).

Connection management when cordoning a node

When you cordon a node, AIStor performs a graceful drain of existing connections:

  • The node enters a draining state.
  • The health endpoint returns HTTP 503, preventing new client requests from routing to this node.
  • AIStor waits up to two minutes to allow existing connections to complete.

After draining completes, the node transitions to a fully cordoned state. AIStor disconnects all grid connections.

To cordon a node immediately, you can skip the drain phase using the --no-drain flag:

mc admin cordon --no-drain ALIAS NODE
Immediate cordon
Using --no-drain immediately terminates all in-progress requests to the node. Use this option only when you need to quickly isolate a node and can accept potential request failures.

Monitor node status

Use mc admin info to view the status of nodes in your cluster, including cordoned and draining nodes:

mc admin info ALIAS

Nodes display one of the following states:

State Description
Online Node is operational and serving requests.
Draining Node is completing existing requests before cordoning.
Cordoned Node is offline for maintenance.
Offline Node is not responding.

Uncordon a node

Use the mc admin uncordon command to direct the node to return to active service.

You must manually restart the AIStor process on a cordoned node before running mc admin uncordon, such as by running sudo systemctl restart minio on the node. The uncordon command does not restart the node.

Behavior

State persistence

AIStor persists the cordon state to storage. If a draining or cordoned node restarts before being uncordoned, it automatically re-enters the cordoned state. A draining node that restarts transitions directly to the fully cordoned state.

This behavior ensures that nodes do not accidentally rejoin the cluster during maintenance windows.

Quorum protection

Before allowing a cordon or drain operation, AIStor validates that the operation does not cause the cluster to lose quorum. If cordoning the node would reduce the cluster below the minimum required nodes for read and write operations, the command fails with an error similar to the following:

cluster would lose quorum

For clusters operating near minimum quorum, verify the impact of taking a node offline before cordoning. Use mc admin info to review current cluster health and capacity.

Kubernetes considerations

When running AIStor on Kubernetes, the cordon workflow requires additional considerations for Pod lifecycle management.

AIStor cordon vs Kubernetes cordon

The mc admin cordon command operates at the AIStor application layer, not the Kubernetes node layer. It removes an AIStor Pod from cluster participation while the Pod continues running. This differs from kubectl cordon, which prevents new Pods from scheduling on a Kubernetes node.

For AIStor maintenance, use mc admin cordon to gracefully stop activity on a Pod on the AIStor cluster before performing maintenance on the underlying infrastructure.

Maintenance workflows

Pod identity
StatefulSets maintain stable network identities for Pods. When a Pod restarts, it retains the same hostname and PersistentVolumeClaims, so the node address used with mc admin cordon and mc admin uncordon remains the same.