Upgrading InfoScale
Note: To configure SDS pod life cycle hooks, apply the additional kubelet configuration required for this major InfoScale version change. To minimize restarts caused by this configuration, pause the schedulable machine config pools before you begin. Note: Make sure to un-pause the machine config pools as instructed. If you do not follow these steps correctly, it will cause a forced rollout of your nodes. Note: Follow these same steps for version 9.x if you missed the pre-deployment requirement or if the preflight CLI flagged this issue.
oc get kubeletconfigs.machineconfiguration.openshift.io
is empty OR without following params
\# oc get kubeletconfigs.machineconfiguration.openshift.io -oyaml |
grep -i grace
shutdownGracePeriod: 15m
shutdownGracePeriodCriticalPods: 5m
And if its present, check whether it's rolled out
replace the correct node below; it should show kubelet inhibitor.
if it's not present proceed with given configuration.
\# ssh core@ocp-w-02.lab.ocp.lan sudo systemd-inhibit
WHO UID USER PID COMM WHAT WHY MODE
NetworkManager 0 root 1486 NetworkManager sleep NetworkManager
needs to turn off networks delay
kubelet 0 root 3112 kubelet shutdown Kubelet needs
time to handle node shutdown delay
If these kubelet inhibitors are already applied, you can skip Steps A and B.
A. Follow if both workers and masters are schedulable and ANY of master nodes is part of InfoScale
Label the MCP
oc label mcp worker machineconfiguration.openshift.io/domain=sched
oc label mcp master machineconfiguration.openshift.io/domain=sched
\# pause both MCPs
oc patch mcp worker --type=merge -p '{"spec":{"paused":true}}'
machineconfigpool.machineconfiguration.openshift.io/worker patched
oc patch mcp master --type=merge -p '{"spec":{"paused":true}}'
machineconfigpool.machineconfiguration.openshift.io/master patched
\# Apply common systemd config
oc apply -f https://raw.githubusercontent.com/Arctera/
infoscale-kubernetes-enterprise/main/config/sysd/
99-common-sysd.yaml
\# Apply common kubelet config
oc apply -f https://raw.githubusercontent.com/Arctera/
infoscale-kubernetes-enterprise/main/config/kubelet/
common-kubelet-config.yaml
Note: The Machine Config Operator will only roll out this configuration when you unpause it or set pause=false. Do not perform this step yet; follow the next instructions first.
B. Kubeletconfig - Follow if only workers are schedulable
\# kubelet config should have the same label present in this case.
oc label mcp worker machineconfiguration.openshift.io/role=worker
machineconfigpool.machineconfiguration.openshift.io/worker labeled
oc patch mcp worker --type=merge -p '{"spec":{"paused":true}}'
machineconfigpool.machineconfiguration.openshift.io/worker patched
oc get mcp worker -oyaml | grep pause
paused: true
\# Apply systemd config
oc apply -f https://raw.githubusercontent.com/Arctera/
infoscale-kubernetes-enterprise/main/config/sysd/99-worker-sysd.yaml
machineconfig.machineconfiguration.openshift.io/
99-worker-sysd-conf-override created
\# Apply kubelet config for worker
oc apply -f https://raw.githubusercontent.com/Arctera/
infoscale-kubernetes-enterprise/main/config/kubelet/
kubelet-config.yaml
kubeletconfig.machineconfiguration.openshift.io/
custom-kubelet-config created
\# Should show success as -
oc describe kubeletconfigs.machineconfiguration.openshift.io
custom-kubelet-config
Name: custom-kubelet-config
Namespace:
Labels: <none>
Annotations: machineconfiguration.openshift.io/mc-name-suffix:
API Version: machineconfiguration.openshift.io/v1
Kind: KubeletConfig
Metadata:
Creation Timestamp: 2026-01-16T13:15:00Z
Finalizers:
99-worker-generated-kubelet
Generation: 1
Resource Version: 19382539
UID: 940d4930-c19d-4e8e-98f1-99d0fb65e2cd
Spec:
Kubelet Config:
Shutdown Grace Period: 15m
Shutdown Grace Period Critical Pods: 5m
Machine Config Pool Selector:
Match Labels:
machineconfiguration.openshift.io/role: worker
<<< can change as per label
Status:
Conditions:
Last Transition Time: 2026-01-16T13:15:00Z
Message: Success
Status: True
Type: Success
Events: <none>
Note: Note that the machine config pools are still paused at this stage. If your source version is 8.0.4x, apply the required patch now. This step won't be needed if source InfoScale cluster version is 9.x.
\# Contact InfoScale support team to download patch
infoscale-patch-8.0.4x.tar.gz
tar xvzf infoscale-patch-8.0.4x.tar.gz
cd infoscale-patch-8.0.4x
\# Apply the patch
./apply-cluster-patch.sh infoscalecluster-dev
\# Apply
./apply-cluster-patch.sh infoscalecluster-dev
[INFO] Using CLI: oc
[INFO] Locating InfoScaleCluster: infoscalecluster-dev
[INFO] Cluster namespace: infoscale-vtas
[INFO] Discovering pods for cluster infoscalecluster-dev
[INFO] Found pods:
- infoscale-sds-1230-1eb7816cdb4bd7f3-9dlmv
- infoscale-sds-1230-1eb7816cdb4bd7f3-fjpwt
- infoscale-sds-1230-1eb7816cdb4bd7f3-vt2nj
- infoscale-sds-1230-1eb7816cdb4bd7f3-w9ls8
[INFO] Collecting files from patch directory: /opt/infoscale-patch-8.0.4x
[INFO] Processing pod: infoscale-sds-1230-1eb7816cdb4bd7f3-9dlmv
[INFO] -> /usr/sbin/vxassist
[INFO] -> /etc/systemd/system/pod-prestop.service
Created symlink /etc/systemd/system/multi-user.target.wants/
pod-prestop.service → /etc/systemd/system/pod-prestop.service.
[INFO] -> /sbin/vss-util
[INFO] -> /sbin/vss-stop
[INFO] Processing pod: infoscale-sds-1230-1eb7816cdb4bd7f3-fjpwt
[INFO] -> /usr/sbin/vxassist
[INFO] -> /etc/systemd/system/pod-prestop.service
Created symlink /etc/systemd/system/multi-user.target.wants/
pod-prestop.service → /etc/systemd/system/pod-prestop.service.
[INFO] -> /sbin/vss-util
[INFO] -> /sbin/vss-stop
[INFO] Processing pod: infoscale-sds-1230-1eb7816cdb4bd7f3-vt2nj
[INFO] -> /usr/sbin/vxassist
[INFO] -> /etc/systemd/system/pod-prestop.service
Created symlink /etc/systemd/system/multi-user.target.wants/
pod-prestop.service → /etc/systemd/system/pod-prestop.service.
[INFO] -> /sbin/vss-util
[INFO] -> /sbin/vss-stop
[INFO] Processing pod: infoscale-sds-1230-1eb7816cdb4bd7f3-w9ls8
[INFO] -> /usr/sbin/vxassist
[INFO] -> /etc/systemd/system/pod-prestop.service
Created symlink /etc/systemd/system/multi-user.target.wants/
pod-prestop.service → /etc/systemd/system/pod-prestop.service.
[INFO] -> /sbin/vss-util
[INFO] -> /sbin/vss-stop
[INFO] Patch applied successfully to cluster: infoscalecluster-dev
Patch InfoScale cluster version to 9.1.2
With this step, you are triggering the software upgrade for the InfoScale cluster.
oc patch infoscalecluster <cluster-name> -n <namespace>
--type=merge -p '{"spec":{"version":"9.1.2"}}'
infoscalecluster.infoscale.veritas.com/<namespace> patched
Wait for cluster to be in running state and rollout to be complete
\# oc get po -n infoscale-vtas
NAME READY STATUS RESTARTS AGE
infoscale-csi-controller-569fb9fc4-k6ddn 5/5 Running 1 (51s ago) 57s
infoscale-csi-node-c85tf 2/2 Running 0 27s
infoscale-csi-node-cpwrt 2/2 Terminating 0 3d5h
infoscale-csi-node-gsx5d 2/2 Running 0 3d5h
infoscale-csi-node-xfgjn 2/2 Running 0 3d5h
infoscale-fencing-controller-5b86c59dfd-f7ptw 1/1 Running 0 3d5h
infoscale-fencing-enabler-6mx7d 1/1 Running 0 3d5h
infoscale-fencing-enabler-j8zgw 1/1 Running 0 3d5h
infoscale-fencing-enabler-qrxtw 1/1 Running 0 3d5h
infoscale-fencing-enabler-tjcbk 1/1 Running 0 3d5h
infoscale-licensing-operator-7bb6cb7d48-5hz5b 1/1 Running 0 3d14h
infoscale-sds-1230-1eb7816cdb4bd7f3-drhlq 1/1 Running 0 3d5h
infoscale-sds-1230-1eb7816cdb4bd7f3-fzdzl 1/1 Running 0 3d5h
infoscale-sds-1230-1eb7816cdb4bd7f3-gf62d 1/1 Running 0 3d5h
infoscale-sds-1230-1eb7816cdb4bd7f3-hq6b9 1/1 Running 0 3d5h
infoscale-sds-operator-66c66c6ccf-wfzv4 1/1 Running 0 2m49s
infoscale-toolset-1230-6bc76b6b96-64flx 1/1 Running 0 3d5h
infoscale-toolset-1230-6bc76b6b96-87jrp 1/1 Running 0 3d5h
infoscale-toolset-1230-6bc76b6b96-mggxs 1/1 Running 0 3d5h
infoscale-toolset-1230-6d9f474779-nwb26 0/1 Running 0 32s
---
\# oc get infoscaleclusters -A
NAMESPACE NAME VERSION CLUSTERID STATE
infoscale-vtas infoscalecluster-dev 8.0.400 1230 Upgrading
DISKGROUPS STATUS AGE
vrts_kube_dg-1230 Healthy 3d5h
Wait for completion of software upgrade
At this stage, you will see the changes roll out first for CSI, fencing, and the Toolset, followed by the SDS. The cluster status will switch between "Degraded" and "Running" because nodes leave the cluster one at a time to upgrade and then rejoin. The time this takes will depend on the workload running on your system.
infoscale-vtas infoscalecluster-dev 8.0.400 1230
Upgrading vrts_kube_dg-1230 Degraded 38m
infoscale-vtas infoscalecluster-dev 8.0.400 1230
Upgrading vrts_kube_dg-1230 Healthy 39m
infoscale-vtas infoscalecluster-dev 9.1.2 1230
Running vrts_kube_dg-1230 Healthy 39m
Enable paused pools
Note: Only follow this step if the worker/master pools are paused, as it applies to the kubelet config mentioned in Step A or B. If you've done so, unpause the pools one at a time, sequentially.
Unpause the master pools first if they are schedulable. Wait for the rollout to finish completely before unpausing the worker pools. Note that enabling both pools at the same time does not guarantee that your applications will remain available.
oc patch mcp worker --type=merge -p '{"spec":{"paused":false}}'
machineconfigpool.machineconfiguration.openshift.io/worker patched
---
Every 2.0s: oc get no ocp348-ba1: Tue Jan 20 15:42:12 2026
NAME STATUS ROLES AGE VERSION
ocp348-m1.test.int Ready control-plane,master 41d v1.30.7
ocp348-m2.test.int Ready control-plane,master 41d v1.30.7
ocp348-m3.test.int Ready control-plane,master 41d v1.30.7
ocp348-w01.test.int Ready worker 41d v1.30.7
ocp348-w02.test.int Ready worker 41d v1.30.7
ocp348-w03.test.int Ready worker 41d v1.30.7
ocp348-w04.test.int ReadySchedulingDisabled
worker 41d v1.30.7
Wait for rollout and ready state
Wait for the rollout to finish and for the InfoScale cluster status to show as "Ready."
If a node takes too long to recover and shows a status of NotReady or SchedulingDisabled, try resetting the node.
\# oc get infoscaleclusters -Aw
NAMESPACE NAME VERSION CLUSTERID
infoscale-vtas infoscalecluster-dev 9.1.2 1230
infoscale-vtas infoscalecluster-dev 9.1.2 1230
STATE DISKGROUPS STATUS AGE
Running vrts_kube_dg-1230 Degraded 117m
Running vrts_kube_dg-1230 Healthy 121m
Related information