You can manually upgrade to the next minor version of OpenShift Virtualization and monitor the status of an update by using the web console.

About upgrading OpenShift Virtualization

How OpenShift Virtualization upgrades work

  • You can upgrade to the next minor version of OpenShift Virtualization by using the OpenShift Container Platform web console to change the channel of your Operator subscription.

  • You can enable automatic z-stream updates during OpenShift Virtualization installation.

  • Updates are delivered via the Marketplace Operator, which is deployed during OpenShift Container Platform installation. The Marketplace Operator makes external Operators available to your cluster.

  • The amount of time an update takes to complete depends on your network connection. Most automatic updates complete within fifteen minutes.

How OpenShift Virtualization upgrades affect your cluster

  • Upgrading does not interrupt virtual machine workloads.

    • Virtual machine Pods are not restarted or migrated during an upgrade. If you need to update the virt-launcher Pod, you must restart or live migrate the virtual machine.

      Each virtual machine has a virt-launcher Pod that runs the virtual machine instance. The virt-launcher Pod runs an instance of libvirt, which is used to manage the virtual machine process.

  • Upgrading does not interrupt network connections.

  • DataVolumes and their associated PersistentVolumeClaims are preserved during upgrade.

    If you have virtual machines running that cannot be live migrated, they might block an OpenShift Container Platform cluster upgrade. This includes virtual machines that use hostpath provisioner storage or SR-IOV network interfaces.

    As a workaround, you can reconfigure the virtual machines so that they can be powered off automatically during a cluster upgrade. Remove the evictionStrategy: LiveMigrate field and set the runStrategy field to Always. Learn more about configuring virtual machine eviction strategy.

Upgrading OpenShift Virtualization to the next minor version

You can manually upgrade OpenShift Virtualization to the next minor version by using the OpenShift Container Platform web console to change the channel of your Operator subscription.

Prerequisites
  • Access to the cluster as a user with the cluster-admin role.

Procedure
  1. Access the OpenShift Container Platform web console and navigate to OperatorsInstalled Operators.

  2. Click OpenShift Virtualization to open the Operator Details page.

  3. Click the Subscription tab to open the Subscription Overview page.

  4. In the Channel pane, click the pencil icon on the right side of the version number to open the Change Subscription Update Channel window.

  5. Select the next minor version. For example, if you want to upgrade to OpenShift Virtualization 2.4, select 2.4.

  6. Click Save.

  7. Check the status of the upgrade by navigating to OperatorsInstalled Operators. You can also check the status by running the following oc command:

    $ oc get csv -n openshift-cnv

Monitoring upgrade status

The best way to monitor OpenShift Virtualization upgrade status is to watch the ClusterServiceVersion (CSV) PHASE. You can also monitor the CSV conditions in the web console or by running the command provided here.

The PHASE and conditions values are approximations that are based on available information.

Prerequisites
  • Access to the cluster as a user with the cluster-admin role.

  • Install the OpenShift CLI (oc).

Procedure
  1. Run the following command:

    $ oc get csv
  2. Review the output, checking the PHASE field. For example:

    Example output
    VERSION  REPLACES                                        PHASE
    2.2.1    kubevirt-hyperconverged-operator.v2.2.0         Installing
    2.2.0                                                    Replacing
  3. Optional: Monitor the aggregated status of all OpenShift Virtualization component conditions by running the following command:

    $ oc get hco -n openshift-cnv kubevirt-hyperconverged \
    -o=jsonpath='{range .status.conditions[*]}{.type}{"\t"}{.status}{"\t"}{.message}{"\n"}{end}'

    A successful upgrade results in the following output:

    Example output
    ReconcileComplete  True  Reconcile completed successfully
    Available          True  Reconcile completed successfully
    Progressing        False Reconcile completed successfully
    Degraded           False Reconcile completed successfully
    Upgradeable        True  Reconcile completed successfully
Additional information