For the complete documentation index, see llms.txt. This page is also available as Markdown.

Cluster maintenance

Perform day-2 configuration updates, token rotation, trace management, and planned maintenance operations on a running WEKA Operator deployment.

Version upgrades for the WEKA Operator, WekaCluster, and WekaClient are covered in WEKA Operator upgrade and migration.

Tasks

Task
Description

Modify memory, tolerations, driver service, and image pull secret settings.

Modify client-side memory, ports, cores, tolerations, and authentication settings.

Restart all WekaContainer pods to apply updated configuration cluster-wide.

Generate a new join token and update the Kubernetes secret before the current token expires.

Set trace retention limits on a Kubernetes-managed WEKA cluster.

Halt all cluster I/O gracefully for a planned maintenance window.

Recover a cluster before the graceful destroy period expires.


Update WekaCluster configuration

Update WekaCluster configuration parameters to adjust memory allocation, tolerations, driver distribution, or registry authentication.

After you apply the change, the Operator rolls out the affected pods within a few minutes.

Updatable parameters

Parameter
Field

Additional memory

spec.additionalMemory

Tolerations

spec.tolerations

Raw tolerations

spec.rawTolerations

Driver distribution service

spec.driversDistService

Image pull secret

spec.imagePullSecret

Before you begin

  • Verify the WekaCluster is in Ready state.

  • Back up the current weka-cluster.yaml before making changes.

Procedure

  1. Open weka-cluster.yaml and update the relevant field. Use the examples below as reference for each parameter.

    AdditionalMemory:

Tolerations and RawTolerations:

DriversDistService:

ImagePullSecret:

  1. Apply the updated configuration:

  1. If the rollout does not start automatically, see Rotate pods after applying changes.

  2. Verify that the updated values are applied:

Troubleshooting

If pods do not restart or the new configuration is not applied, verify:

  • The syntax in weka-cluster.yaml is correct.

  • You have the necessary permissions to modify the cluster configuration.

  • The WekaCluster is in a healthy state.


Update WekaClient configuration

Update WekaClient configuration parameters to adjust client memory, ports, cores, tolerations, authentication references, or the driver distribution service.

After applying any of the following changes, all affected pods restart within a few minutes to apply the new configuration.

Updatable parameters

Parameter
Field

Driver distribution service

spec.driversDistService

Image pull secret

spec.imagePullSecret

Cluster secret reference

spec.wekaSecretRef

Additional memory

spec.additionalMemory

Upgrade policy

spec.upgradePolicy

Drivers loader image

spec.driversLoaderImage

Port

spec.port

Agent port

spec.agentPort

Port range

spec.portRange

Cores number

spec.coresNumber

Tolerations

spec.tolerations

Raw tolerations

spec.rawTolerations

Before you begin

  • Ensure you have access to the weka-client.yaml configuration file or the WekaClient CR.

  • Verify you have the necessary permissions to modify client configurations.

  • Back up the current weka-client.yaml before making changes.

  • Verify the cluster is in a healthy state and accessible to clients.

Procedure

  1. Open weka-client.yaml and update the relevant field. Use the examples below as reference for each parameter.

    DriversDistService:

ImagePullSecret:

WekaSecretRef:

AdditionalMemory:

Tolerations and RawTolerations:

CoresNumber:

  1. Apply the updated configuration:

  1. Delete the affected client pods to trigger the restart:

  1. Verify the pods have restarted and rejoined the cluster:

Troubleshooting

If pods do not restart or the new configuration is not applied, verify:

  • The syntax in weka-client.yaml is correct.

  • You have the necessary permissions to modify the client configuration.

  • The cluster is in a healthy state and accessible to clients.

  • The specified ports are available and not blocked by network policies.


Update port configuration

Migrate from explicit port and agentPort settings to a portRange configuration. This procedure involves deleting client pods to apply the change. Follow the force-delete guidance below before proceeding.

Do not use --force --grace-period=0 when deleting WekaClient pods. Force-deleting a pod does not remove the underlying WekaContainer resource. The Operator immediately recreates the pod on the same node. Delete the WekaContainer resource instead if the pod does not terminate cleanly. See Do not force-delete WEKA pods in Troubleshoot WEKA Operator deployments.

Procedure

  1. Verify the clients are running with the current port configuration:

  1. Open weka-client.yaml, remove the port and agentPort fields, and add portRange:

  1. Apply the updated configuration:

  1. Delete the WekaContainer resource for each affected client to trigger reconfiguration. Replace <client-container-name> with the actual WekaContainer name:

  1. Verify the pods have restarted and rejoined the cluster:


Rotate pods after applying changes

Restart all WekaContainer pods in sequence to apply updated cluster configuration across all containers.

Wait for each set of pods to return to Running before proceeding to the next set. Deleting all pod types simultaneously can cause a service disruption.

Before you begin

Apply the updated configuration before rotating pods:

Procedure

  1. Delete compute pods:

  1. Wait for compute pods to reach Running, then delete drive pods:

  1. Wait for drive pods to reach Running, then delete S3 pods:

  1. Wait for S3 pods to reach Running, then delete envoy pods:

  1. Monitor pod status until all pods return to Running:

Expected results

  • All pods return to Running state within a few minutes.

  • Resource configurations match the updated values in the cluster configuration.

  • No service disruption occurs during the rotation process.

  • Pods automatically restart after deletion.


Rotate the WekaClient join token

Generate a new join token and update the Kubernetes secret before the current token expires to maintain uninterrupted WekaClient connectivity.

Before you begin

  • Ensure you have access to a running WEKA backend container in the weka-operator-system namespace.

  • Ensure you have kubectl access with appropriate permissions.


Step 1: Generate and encode a new join token

  1. List the available pods in the weka-operator-system namespace:

  1. Connect to a backend pod and generate a long-lived token. Replace <POD_NAME> with a Compute or Drive pod name:

This command generates a JWT token valid for 52 weeks. Example output:

  1. Encode the token to base64:

Save the base64-encoded output for use in the next step.


Step 2: Create the updated Kubernetes secret

Choose one of the following options:

Option A: Create from a YAML template

Create a file named secret.yaml and populate it with the encoded values:

  • join-secret: use the base64-encoded token from step 1.

  • org, username, password: copy from the existing secret or provide new base64-encoded values.

Option B: Export and modify the existing secret

Export the current secret and update only the token:

Edit the file and replace the join-secret value with the new base64-encoded token.


Step 3: Apply the secret

Apply the updated secret:

Verify the secret was created:


Step 4: Update the WekaClient configuration

  1. Remove active workloads from the target node to ensure no pods are actively using WEKA storage:

  1. Remove the existing WekaClient:

  1. Create a new WekaClient that references the updated secret:

  1. Apply the manifest:


Step 5: Verify client status

Monitor the new WekaClient deployment:

The new client should show Running status. CSI pods may temporarily enter CrashLoopBackOff while the client initializes but recover automatically once the client is ready. If CSI pods remain in a failed state after the WekaClient is running, restart them manually:

Token management best practices

  • Generate tokens with expiration times aligned to your maintenance schedule.

  • Store secrets in the appropriate namespaces with RBAC controls applied.

  • Maintain records of token generation dates and expiration times.

  • Set up alerts for token expiration to prevent service disruptions.

  • Validate new tokens in non-production environments before deploying to production.

  • Limit access to token generation commands to authorized personnel.

  • Rotate tokens regularly as part of your security policy.

  • Monitor and audit secret access and modifications.


Configure trace retention

Set trace retention limits on a Kubernetes-managed WEKA cluster. The Operator applies the settings cluster-wide and propagates them to attached stateless clients automatically.

Do not run weka cluster commands to configure trace retention on a Kubernetes-managed deployment. These commands take effect only when dumperConfigMode is set to cluster. The Operator manages dumperConfigMode automatically and sets it to auto.

Procedure

  1. Add the tracesConfiguration block under spec in the WekaCluster CR:

Field
Description
Required

ensureFreeSpace

Minimum free space, in GiB, the cluster preserves on each I/O process.

Yes

maxCapacityPerIoNode

Maximum total trace capacity, in GiB, per I/O process.

No. Default: 10 GiB

  1. Apply the updated configuration:

Cluster-level retention propagates to stateless clients automatically. To override retention on a specific stateless client:

Related topic: [Traces management]


Pause and resume a cluster for maintenance

Pause all containers in a WEKA cluster gracefully during a planned maintenance window where all I/O must halt without removing the cluster.

Before you begin

Run weka cluster stop-io manually before applying the pause. The Operator does not perform this step automatically.

Key behaviors

  • No data is deleted during a pause.

  • The pause state propagates automatically to any WekaClient resources that reference the cluster through spec.targetCluster during the client's next reconciliation cycle.

  • The spec.overrides.paused field on the WekaCluster CR controls the pause state.

spec.overrides.paused values

Value
Behavior

Field omitted

No propagation. The cluster does not enforce a pause state on containers.

true

Containers are stopped in sequence. Cluster status changes to Paused.

false

Containers that were paused by this field transition back to active. Containers in other states are not affected.

Procedure: pause the cluster

  1. Run weka cluster stop-io on the cluster.

  2. Apply the following change to the WekaCluster manifest:

  1. Apply the updated configuration:

The cluster status changes to Paused as containers are stopped in sequence.

Procedure: resume the cluster

Set paused to false to return paused containers to active state:

Apply the updated configuration:

To remove cluster-level pause control entirely, delete the overrides.paused field from the manifest.


Cancel a cluster deletion

Recover a WEKA cluster after a deletion has been initiated but before the graceful destroy period expires.

How the grace period works

When a deletion is requested, the Operator pauses cluster containers instead of removing them immediately, providing a recovery window. The default grace period is 24 hours, set by spec.gracefulDestroyDuration. To bypass this window in non-production environments, see Delete a WekaCluster in WEKA Operator upgrade and migration.

Before you begin

  • Verify the cluster is still within the gracefulDestroyDuration window.

  • Ensure you have permissions to edit the WekaCluster CR.

Procedure

  1. Open the WekaCluster resource for editing:

  1. Navigate to the spec.overrides section and set cancelDeletion to true:

  1. Save and apply the change. The Operator detects the update and resumes the cluster containers.

  2. Verify the cluster returns to a healthy state:

The cluster status should return to Ready.


Related topics

WEKA Operator upgrade and migration

WekaCluster and WekaContainer lifecycle

Troubleshoot WEKA Operator deployments

WEKA CRD API Reference

Last updated