|
2 | 2 | // |
3 | 3 | // * virt/upgrading-virt.adoc |
4 | 4 |
|
| 5 | +:_content-type: CONCEPT |
5 | 6 | [id="virt-about-workload-updates_{context}"] |
6 | 7 | = About workload updates |
7 | 8 |
|
8 | | -* When you upgrade {VirtProductName}, virtual machine workloads including `libvirt`, `virt-launcher`, and `qemu` update automatically if they support live migration. |
9 | | -+ |
| 9 | +When you update {VirtProductName}, virtual machine workloads, including `libvirt`, `virt-launcher`, and `qemu`, update automatically if they support live migration. |
| 10 | + |
10 | 11 | [NOTE] |
11 | 12 | ==== |
12 | 13 | Each virtual machine has a `virt-launcher` pod that runs the virtual machine |
13 | | -instance. The `virt-launcher` pod runs an instance of `libvirt`, which is |
14 | | -used to manage the virtual machine process. |
| 14 | +instance (VMI). The `virt-launcher` pod runs an instance of `libvirt`, which is |
| 15 | +used to manage the virtual machine (VM) process. |
15 | 16 | ==== |
16 | 17 |
|
17 | | -** There are two available workload update methods: `LiveMigrate` and `Evict`. By default, only `LiveMigrate` is enabled, which means that: |
| 18 | +You can configure how workloads are updated by editing the `spec.workloadUpdateStrategy` stanza of the `HyperConverged` custom resource (CR). There are two available workload update methods: `LiveMigrate` and `Evict`. |
| 19 | + |
| 20 | +Because the `Evict` method shuts down VMI pods, only the `LiveMigrate` update strategy is enabled by default. |
| 21 | + |
| 22 | +When `LiveMigrate` is the only update strategy enabled: |
| 23 | + |
| 24 | +* VMIs that support live migration are migrated during the update process. The VM guest moves into a new pod with the updated components enabled. |
| 25 | +
|
| 26 | +* VMIs that do not support live migration are not disrupted or updated. |
| 27 | +
|
| 28 | +** If a VMI has the `LiveMigrate` eviction strategy but does not support live migration, it is not updated. |
| 29 | + |
| 30 | +If you enable both `LiveMigrate` and `Evict`: |
| 31 | + |
| 32 | +* VMIs that support live migration use the `LiveMigrate` update strategy. |
18 | 33 |
|
19 | | -*** Virtual machine instances (VMIs) that support live migration are migrated during the upgrade process. |
| 34 | +* VMIs that do not support live migration use the `Evict` update strategy. If a VMI is controlled by a `VirtualMachine` object that has a `runStrategy` value of `always`, a new VMI is created in a new pod with updated components. |
20 | 35 |
|
21 | | -*** VMIs are not updated at all if the following conditions are both true: |
| 36 | +[discrete] |
| 37 | +[id="migration-attempts-timeouts_{context}"] |
| 38 | +== Migration attempts and timeouts |
| 39 | + |
| 40 | +When updating workloads, live migration fails if a pod is in the `Pending` state for the following periods: |
| 41 | + |
| 42 | +5 minutes:: If the pod is pending because it is `Unschedulable`. |
| 43 | + |
| 44 | +15 minutes:: If the pod is stuck in the pending state for any reason. |
| 45 | + |
| 46 | +When a VMI fails to migrate, the `virt-controller` tries to migrate it again. It repeats this process until all migratable VMIs are running on new `virt-launcher` pods. If a VMI is improperly configured, however, these attempts can repeat indefinitely. |
| 47 | + |
| 48 | +[NOTE] |
| 49 | +==== |
| 50 | +Each attempt corresponds to a migration object. Only the five most recent attempts are held in a buffer. This prevents migration objects from accumulating on the system while retaining information for debugging. |
| 51 | +==== |
22 | 52 |
|
23 | | -**** The VMI does not support live migration. |
24 | 53 |
|
25 | | -**** The VMI is configured to use the `LiveMigrate` eviction strategy. |
26 | 54 |
|
27 | | -** You can configure how workloads are updated by editing the `spec.workloadUpdateStrategy` stanza of the `HyperConverged` custom resource (CR). |
|
0 commit comments