Upgrading InfoScale

Last published : Jun 12, 2026
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