Skip to main content

Edge Cluster Upgrade Behavior

When you update an active Edge cluster's profile, Palette will upgrade the active cluster to the latest version of the profile. Depending on the nature of the change, implementing an upgrade might involve repaving a cluster, rebooting a cluster, restarting services, or doing nothing. For more information about cluster repaves, refer to Repave Behavior and Configurations. For more information about how to update a cluster profile, refer to Update a Cluster.

warning
  • If a cluster's Kubernetes service is down, updates to the cluster's profile will not get applied to the cluster. You must fix the issue impacting the Kubernetes service first. Once the Kubernetes service is back to being operational, the Palette agent will apply the updates from the cluster profile to the cluster.

Known Issues​

  • For RKE2 clusters, updates to the stages.* section in the Operating System (OS) and the Kubernetes pack of the cluster profile will trigger a repave instead of a reboot. The only exception is changes to the stages.reconcile.* section, which will behave as expected and trigger a configuration reload.

A/B Partitioning in Upgrades​

Edge clusters created with Kairos-based provider images use A/B system partitions to handle upgrades. In an A/B partitions system, the Edge host retains two bootable partitions: an active partition and a passive partition. In a normal startup sequence, the bootloader will load the active image. In the event that the active image is not bootable, the bootloader will load the passive image.

During upgrades, the image that the cluster is upgrading to becomes a transitional image. When the upgrade is successful, the transitional image becomes the new active image, while the old active image becomes the new passive image. The old passive image is then discarded.

Diagram of the A/B Partition upgrade process

Upgrade Behaviors​

A cluster could respond to an upgrade in several ways. The table below lists the potential upgrade behaviors you could encounter.

Upgrade BehaviorDescription
RepaveRepaves all nodes in the cluster, starting with the control plane.
RebootReboots all nodes in the cluster, starting with the control plane.
Service restartRestarts specific services in all nodes in the cluster, starting with the control plane.
Configuration reloadUpdates the configurations without needing to restart services or the node. This is only triggered when you update stage.reconcile.* in the Operating System (OS) layer.
No operations (No-op)Acknowledges the update request but does nothing.

Upgrade Behavior by Change Location​

Updates in the OS or Kubernetes layers can trigger different upgrade behaviors depending on the exact values changed.

OS Layer​

RepaveRebootService RestartNo-op
- options.system.uri- stages.rootfs.*
- stages.initramfs.*
- stages.boot.*
- stages.fs.*
- stages.network.*
- stages.after-install.*
- stages.after-install-chroot.*
- stages.after-upgrade.*
- stages.after-upgrade-chroot.*
- stages.after-reset.*
- stages.after-reset-chroot.*
- stages.before-install.*
- stages.before-upgrade.*
- stages.before-reset.*
None.- pack.*
- providerCredentials.*
- options.system.registry
- options.system.repo
- options.system.k8sDistribution
- options.system.osName
- options.system.peVersion
- options.system.customTag
- options.system.osVersion
warning

Changes to any other parameters that are used by the options.system.uri parameter will also trigger a cluster repave. For example, if your options.system.uri parameter is {{ .spectro.pack.edge-native-byoi.options.system.registry }}/{{ .spectro.pack.edge-native-byoi.options.system.repo }}:{{ .spectro.pack.edge-native-byoi.options.system.k8sDistribution }}, changes to .spectro.pack.edge-native-byoi.options.system.registry will trigger a cluster repave because it changes the options.system.uri parameter.

Kubernetes Layer​

RepaveRebootService RestartNo-op
None.- stages.rootfs.*
- stages.initramfs.*
- stages.boot.*
- stages.fs.*
- stages.network.*
- stages.after-install.*
- stages.after-install-chroot.*
- stages.after-upgrade.*
- stages.after-upgrade-chroot.*
- stages.after-reset.*
- stages.after-reset-chroot.*
- stages.before-install.*
- stages.before-upgrade.*
- stages.before-reset.*
- cluster.*
- clientConfig.*
- pack.*

Network Layer​

Changes made to the Container Network Interface (CNI) pack typically do not result in cluster repave or reboot, and can be applied by restarting the related networking services.

warning

Do not change to a different CNI pack after provisioning a cluster. You can make changes to the existing CNI pack, but if you want to use a different CNI pack altogether, we recommend you create another cluster.

Storage Layer​

Changes made to the storage layer typically do not result in cluster repave or reboot and can be applied by restarting the related storage services.

warning

Do not change to a different storage pack after provisioning a cluster. You can make changes to the existing storage pack, but if you want to use a different storage pack altogether, we recommend you create another cluster.

Decoupled Control Plane and Worker Node Upgrades​

Edge Native clusters that use Palette eXtended Kubernetes Edge (PXK-E) or Canonical Kubernetes support upgrading the control plane independently from worker pools. You can enable the Skip worker node update (Optional) toggle on individual worker pools to defer their Kubernetes upgrade while the control plane advances. This decouples worker upgrades from control plane upgrades, which lets you move the control plane forward, for example to apply a security patch, without repaving worker nodes. It also reduces the number of worker upgrades needed to cross several Kubernetes minor versions.

info

Decoupled control plane and worker node upgrades are supported for PXK-E and Canonical Kubernetes only. K3s and RKE2 clusters are not supported.

Support also depends on how the cluster is managed.

Cluster managementSupport
Connected (centrally managed)Supported. Configure the toggle in Palette.
Locally managed, airgappedSupported. Configure the toggle in Local UI or through the Local UI API.

When a cluster profile update bumps the Kubernetes version, the control plane and any worker pools that do not have Skip worker node update enabled are upgraded. Worker pools with the toggle enabled are skipped and stay at their current Kubernetes version. Control plane nodes are always upgraded to the Kubernetes and OS versions declared in the cluster profile, and are upgraded one at a time.

A skipped worker pool can still be updated on Day-2 for other node configuration changes, such as taints and labels. Its Kubernetes and OS versions stay unchanged.

The Kubernetes N-3 minor version skew is enforced. If a profile update would push a worker pool more than three minor versions behind the control plane, the update is rejected and the profile is not applied to the cluster. Disable the toggle on the affected pools first.

Scale-up is not permitted while the toggle is enabled. Scale-up requests on a pool with the toggle enabled are rejected, whether initiated manually or by the cluster autoscaler, because a new node cannot honor the pool's pinned Kubernetes version. To expand capacity, create a new worker pool and add Edge hosts to it instead.

Upgrade a Skipped Worker Pool​

To sync the Kubernetes version of a skipped worker pool with the current Kubernetes control plane version, disable the Skip worker node update toggle on that pool.

danger

Disabling Skip worker node update triggers a repave of the worker pool. Ensure you are ready to repave before disabling the toggle.

For configuration details, refer to Skip Worker Node Update. For step-by-step instructions to trigger the upgrade, refer to Trigger Worker Node Upgrade.