Upgrading DataCore Puls8
Explore this Page
- Overview
- Upgrade Path Summary
- Requirements
- Upgrade Process Overview
- Pre-Upgrade Validation
- Backup Recommendations
- Upgrade DataCore Puls8
- Controlling Upgrade Scope (Optional)
- Post-Upgrade Validation
- CLI Reference
- Troubleshooting
- Best Practices
Overview
DataCore Puls8 supports in-place upgrades to deliver new features, performance enhancements, and stability improvements while preserving existing storage resources and configurations.
The DataCore Puls8 upgrade is a two-phase process:
- Phase 1: Control-Plane Upgrade (Helm upgrade)
- Updates the Puls8 control-plane components without interrupting storage I/O.
- Phase 2: Data-Plane Upgrade (Replicated PV Mayastor
io-enginerestart)- Restarts Replicated PV Mayastor
io-enginepods one at a time. After each restart, the DataCore Puls8 upgrade job waits for volume replica rebuilds to complete before proceeding to the next node. This ensures data availability for multi-replica Replicated PV Mayastor volumes.
- After each
io-enginerestart:- Replica rebuild begins
- The upgrade waits until the rebuild completes
- The upgrade proceeds to the next node
- The upgrade duration depends on:
- Volume size
- Number of nodes
- Storage performance
- Network performance
- Restarts Replicated PV Mayastor
This document describes how to upgrade DataCore Puls8 from version 4.4 to version 4.5. It includes upgrade requirements, pre-upgrade validation, upgrade procedure, and post-upgrade verification.
Upgrading to DataCore Puls8 4.5 provides access to the latest features, enhancements, and stability improvements.
Downgrading DataCore Puls8 to a previous version is not supported.
The upgrade follows this sequence:
- Supported source version:DataCore Puls8 4.4
- Target version:DataCore Puls8 4.5
- Downgrade support: Not supported
- Replicated PV Mayastor single-replica volumes: Temporary downtime during restart
- Replicated PV Mayastor multi-replica volumes: Remain available, may briefly degrade
Puls8 Plugin Version
The version of the kubectl puls8 plugin determines the DataCore Puls8 version you upgrade to. For example: To upgrade to DataCore Puls8 4.5, install the DataCore Puls8 4.5 plugin.
You can download the plugin from the DataCore Downloads portal.
Always install the kubectl puls8 plugin version that matches your intended target Puls8 version before starting the upgrade.
Cluster Requirements
- A healthy Kubernetes cluster running a supported version.
- DataCore Puls8 4.4 installed using the documented Helm installation process.
- DiskPools must have sufficient free capacity for replica rebuilds.
Access Requirements
- Kubernetes cluster administrator privileges.
- Ability to pull DataCore Puls8 4.5 container images.
- Permission to install and execute the
kubectl puls8binary.
Network Requirements
Ensure no firewall or network policy restrictions block:
- Puls8 container image registry
- Puls8 control-plane communication
If your environment uses a private, custom, or air-gapped container registry, ensure that all Puls8 images required for the target version are available in the registry before starting the upgrade. The upgrade process pulls the required images automatically, and missing images will cause the upgrade to fail.
If a custom registry or repository namespace is used, ensure the Helm configuration and upgrade command reference the correct registry location.
The upgrade follows this sequence:
- Install the
kubectl puls8 pluginfor the target version. - Validate cluster and DataCore Puls8 component health.
- Backup existing Helm configuration.
- Run upgrade command.
- The
kubectl puls8plugin creates the Puls8 upgrade job, which performs the following operations:- Executes the Helm upgrade to update control-plane components.
- Waits for replica rebuild operations to complete between each restart.
- Completes the upgrade and returns the system to a normal operational state.
DataCore Puls8 automatically performs a rolling upgrade of Replicated PV Mayastorio-engine pods to ensure storage availability and data integrity.
Validate the Puls8 environment to ensure the cluster, storage resources, and workloads are healthy before starting the upgrade. This helps prevent upgrade failures and ensures storage continuity.
- Verify currently installed Puls8 version. CopySample Output
NAME: puls8
CHART: puls8
VERSION: 4.5.0
APP_VERSION: 4.5.0
NAMESPACE: puls8
REVISION: 1
STATUS: deployed
DEPLOYED_AT: 2026-07-30T11:04:21+05:30
APPLY_METHOD: server-side apply - Verify node health. CopySample Output
NAME STATUS ROLES AGE VERSION
master-puls8-20851 Ready control-plane 3h35m v1.35.6
node-0-puls8-20851 Ready <none> 3h34m v1.35.6
node-1-puls8-20851 Ready <none> 3h34m v1.35.6
node-2-puls8-20851 Ready <none> 3h34m v1.35.6 - Verify DataCore Puls8 component health. CopySample Output
NAME READY STATUS RESTARTS AGE
alertmanager-puls8-kube-prometheus-stac-alertmanager-0 2/2 Running 0 3h19m
dcs-puls8-down-pro-diskpoolclaim-operator-7bc46d9d5c-8k7fv 1/1 Running 0 3h20m
puls8-agent-core-78b5b4f5c-hvn9t 2/2 Running 0 3h20m
puls8-csi-controller-5bf84b497d-p2hht 6/6 Running 0 3h20m
puls8-io-engine-5pbq2 2/2 Running 0 3h20m
... (all Puls8 components Running) - Verify DiskPool health. CopyEnsure all DiskPools are Healthy and Online Before Upgrading
kubectl get diskpools -n <namespace>CopySample OutputNAME NODE STATE STATUS ERROR ALERTS ENCRYPTED CAPACITY USED AVAILABLE DISK-CAPACITY MAX-EXPANDABLE-SIZE
pool-node-0 node-0-puls8-20851 Created Online Healthy false 9.9 GiB 1 GiB 8.9 GiB 10 GiB 127.8 GiB
pool-node-1 node-1-puls8-20851 Created Online Healthy false 9.9 GiB 1 GiB 8.9 GiB 10 GiB 127.8 GiB
pool-node-2 node-2-puls8-20851 Created Online Healthy false 9.9 GiB 1 GiB 8.9 GiB 10 GiB 127.8 GiB - Verify volume health. CopySample Output
ID REPLICAS TARGET-NODE ACCESSIBILITY STATUS SIZE THIN-PROVISIONED ALLOCATED SNAPSHOTS SOURCE CLEAN-SHUTDOWN ENCRYPTED
5f003161-9714-4e11-a691-41ae2ba53c18 3 node-0-puls8-20851 nvmf Online 1 GiB false 1 GiB 0 <none> false falseLocal Storage operates in kernel space and remain unaffected during Puls8 container restarts.
Storage Impact Replicated PV Mayastor Temporary volume unavailability during io-enginerestartLocal PV Hostpath No impact Local PV LVM No impact Local PV ZFS No impact Single-replica Replicated PV Mayastor volumes will experience temporary downtime during upgrade. Plan maintenance windows accordingly.
Volume Type Upgrade Impact 2+ replicas Remains available 1 replica Temporary downtime (1-3 minutes per node) - Verify Persistent Volume Claims (PVCs). CopySample Output
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
ms-volume-claim Bound pvc-5f003161-9714-4e11-a691-41ae2ba53c18 1Gi RWO mayastor-3 26m - Verify VolumeSnapshots.
Although DataCore Puls8 upgrades do not alter user data or storage objects, it is recommended to retain backups of key configuration details:
helm get values <release-name> -n <namespace> > puls8-4.4-values-backup.yaml
Also consider backing up:
- StorageClass manifests
- DiskPool manifests
- Application manifests referencing DataCore Puls8 volumes
Backing up Helm values allows you to restore configuration settings if recovery is required.
Upgrade DataCore Puls8
Upgrade DataCore Puls8 to apply the new version to control-plane and data-plane components. The upgrade is performed as a rolling operation, ensuring storage resources and data remain preserved while the new version is applied.
- Verify
kubectl puls8plugin version.Ensure plugin version matches desired target version.
- Start the DataCore Puls8 upgrade.
This initiates both control-plane and data-plane upgrades.
The upgrade automatically restarts Replicated PV Mayastor
io-enginepods sequentially. - Monitor upgrade progress.
- View the detailed upgrade logs. (Optional)
- Cleanup Upgrade Resources. (Optional)
By default, the Puls8 upgrade performs both control-plane and data-plane upgrades. If required, you can upgrade only the control-plane components without restarting the Replicated PV Mayastorio-engine pods.
Upgrade Control-Plane Only
kubectl puls8 upgrade -n <namespace> --skip-data-plane-restart
Use when:
- You want to restart
io-enginepods manually later - You are scheduling data-plane upgrade separately
By default, the Puls8 upgrade performs both control-plane and data-plane upgrades. If required, you can upgrade only the control-plane components without restarting the Replicated PV Mayastorio-engine pods.
After the upgrade completes, validate the Puls8 environment to ensure all components, storage resources, and workloads remain healthy and operational.
- Verify DataCore Puls8 component health. CopySample Output
NAME READY STATUS RESTARTS AGE
alertmanager-puls8-kube-prometheus-stac-alertmanager-0 2/2 Running 0 3h19m
puls8-agent-core-78b5b4f5c-hvn9t 2/2 Running 0 3h20m
puls8-csi-controller-5bf84b497d-p2hht 6/6 Running 0 3h20m
puls8-io-engine-5pbq2 2/2 Running 0 3h20m
... (all Puls8 components Running) - Verify DiskPool health. CopySample Output
NAME NODE STATE STATUS ERROR ALERTS ENCRYPTED CAPACITY USED AVAILABLE DISK-CAPACITY MAX-EXPANDABLE-SIZE
pool-node-0 node-0-puls8-20851 Created Online Healthy false 9.9 GiB 1 GiB 8.9 GiB 10 GiB 127.8 GiB
pool-node-1 node-1-puls8-20851 Created Online Healthy false 9.9 GiB 1 GiB 8.9 GiB 10 GiB 127.8 GiB
pool-node-2 node-2-puls8-20851 Created Online Healthy false 9.9 GiB 1 GiB 8.9 GiB 10 GiB 127.8 GiB - Verify PVCs. CopySample Output
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
ms-volume-claim Bound pvc-5f003161-9714-4e11-a691-41ae2ba53c18 1Gi RWO mayastor-3 26m - Verify volume health. CopySample Output
ID REPLICAS TARGET-NODE ACCESSIBILITY STATUS SIZE THIN-PROVISIONED ALLOCATED SNAPSHOTS SOURCE CLEAN-SHUTDOWN ENCRYPTED
5f003161-9714-4e11-a691-41ae2ba53c18 3 node-0-puls8-20851 nvmf Online 1 GiB false 1 GiB 0 <none> false false - Verify VolumeSnapshots.
- Verify installed Puls8 version. CopySample Output
NAME: puls8
CHART: puls8
VERSION: 4.5.0
APP_VERSION: 4.5.0
NAMESPACE: puls8
REVISION: 1
STATUS: deployed
Basic Syntax
Common Options
| Option | Description |
|---|---|
-n, --namespace
|
Puls8 namespace |
-r, --release-name
|
Helm release name |
--set KEY=VALUE
|
Override Helm values |
--set-file KEY=PATH
|
Override values from file |
--registry
|
Override container registry |
--repo-namespace
|
Override image repository namespace |
Validation Skip Options
| Option | Description |
|---|---|
--skip-single-replica-volume-validation
|
Skip warning for single-replica volumes |
--skip-replica-rebuild
|
Skip rebuild validation |
--skip-cordoned-node-validation
|
Skip cordoned node validation |
Skipping validations may increase upgrade risk. Use these options only when necessary.
Troubleshooting
Common upgrade issues include:
- Validation failures during upgrade
- Version mismatch between plugin and installed Puls8 version
- Image pull errors caused by registry access restrictions
- Namespace discrepancies when running upgrade commands
- Upgrade stuck during replica rebuild
- Cleanup stuck upgrade resources
- View upgrade logs for debugging
If the upgrade fails during validation, configuration issues, unhealthy storage resources, or cluster state conditions may be preventing the upgrade from proceeding. DataCore Puls8 waits for rebuild completion before proceeding to ensure data redundancy and consistency.
kubectl logs -n <namespace> job/puls8-upgrade-v4-5-0
Resolve the reported issue before retrying the upgrade.
If the upgrade fails due to a version mismatch, the installed kubectl puls8 plugin version may not match the intended target version or may be older than the installed Puls8 version.
# Verify kubectl puls8 plugin version
kubectl puls8 -V
# Verify installed Puls8 version
helm get metadata <release-name> -n <namespace>
Kubectl Plugin (kubectl-puls8) revision 081e77c2bcf7 (v4.3.0+0)
NAME: puls8
CHART: puls8
VERSION: 4.5.0
APP_VERSION: 4.5.0
STATUS: deployed
Install the appropriate plugin version before retrying the upgrade.
If the upgrade fails due to container image pull errors, the cluster may not have access to the default container registry or repository. In such cases, explicitly specify the container registry and repository namespace when running the upgrade command using the following options:
--registry <REGISTRY>
Specify the container registry for the upgrade-job image
--repo-namespace <REPO_NAMESPACE>
Specify the container namespace for the upgrade-job image
(default: datacoresoftware)
If the upgrade fails due to namespace mismatches, ensure that all kubectl puls8 commands explicitly specify the namespace where DataCore Puls8 is installed. Use the -n <namespace> flag consistently with all upgrade commands, for example:
Replace <namespace> with the namespace in which DataCore Puls8 is deployed.
If the upgrade pauses for an extended period, it may be waiting for volume replica rebuilds to complete. DataCore Puls8 waits for rebuild completion before proceeding to ensure data redundancy and consistency.
ID REPLICAS TARGET-NODE ACCESSIBILITY STATUS SIZE THIN-PROVISIONED ALLOCATED SNAPSHOTS SOURCE CLEAN-SHUTDOWN ENCRYPTED
5f003161-9714-4e11-a691-41ae2ba53c18 3 node-0-puls8-20851 nvmf Online 1 GiB false 1 GiB 0 <none> false false
Wait until all volumes report a Healthy state and rebuild operations are complete.
If the upgrade does not complete successfully, the upgrade Kubernetes resources cannot be removed using the standard cleanup command. In such cases, use the force option to forcibly delete the upgrade resources.
To diagnose upgrade failures or monitor upgrade activity, review the upgrade job logs:
These logs provide detailed information about upgrade progress, validation failures, and component status.
Best Practices
Follow these best practices to ensure a safe upgrade:
- Install the correct plugin version first
- Test upgrade in non-production environment
- Use multi-replica volumes for critical workloads
- Schedule maintenance window
- Notify application owners
- Monitor rebuild progress
- Do not interrupt upgrade during rebuild
Learn More