OpenYurt v1.1.0: Auto and OTA DaemonSet Upgrade Strategies for Edge Computing
OpenYurt v1.1.0 introduces two DaemonSet upgrade strategies—Auto, which skips NotReady nodes, and OTA, which lets edge users control upgrade timing—both implemented via custom controllers and annotations, with example YAML configurations and a simple API for manual pod upgrades.
Overview
OpenYurt v1.1.0 introduces two DaemonSet upgrade strategies—Auto and OTA—to handle edge‑node NotReady conditions and to let edge operators control upgrade timing.
Auto Upgrade Strategy
In edge clusters, nodes may become NotReady due to unstable public networks. The native DaemonSet rolling update stalls because Pods on NotReady nodes remain in Terminating and new Pods cannot be scheduled. OpenYurt adds a custom controller daemonPodUpdater‑controller in the Yurt‑Controller‑Manager. The controller watches DaemonSet Pods; when a Pod is on a NotReady node it skips the update, and once the node becomes Ready it automatically deletes the old Pod so the DaemonSet controller creates the new version.
To enable the Auto strategy:
Set the DaemonSet spec.updateStrategy.type to OnDelete (required for the custom controller to take over).
Add the annotation apps.openyurt.io/update-strategy: auto.
Optionally limit the number of unavailable Pods with apps.openyurt.io/max-unavailable (default 10%).
apiVersion: apps/v1
kind: DaemonSet
metadata:
annotations:
apps.openyurt.io/update-strategy: auto
apps.openyurt.io/max-unavailable: 30%
spec:
updateStrategy:
type: OnDelete
# ... other DaemonSet spec ...OTA Upgrade Strategy
OTA (Over‑The‑Air) is intended for scenarios where the edge operator must decide when to apply a new version, e.g., automotive workloads that cannot be upgraded while the vehicle is moving. The same daemonPodUpdater‑controller detects a new DaemonSet revision and adds a PodNeedUpgrade condition to each managed Pod. Edge applications query this condition via YurtHub and trigger the upgrade manually.
To enable OTA:
Set spec.updateStrategy.type to OnDelete.
Add the annotation apps.openyurt.io/update-strategy: ota.
apiVersion: apps/v1
kind: DaemonSet
metadata:
annotations:
apps.openyurt.io/update-strategy: ota
spec:
updateStrategy:
type: OnDelete
# ... other DaemonSet spec ...YurtHub OTA Control API
Edge operators interact with YurtHub through two HTTP endpoints: GET /pods – Returns the list of Pods on the edge node; each Pod includes the PodNeedUpgrade condition indicating whether a newer DaemonSet revision is available. POST /openyurt.io/v1/namespaces/{ns}/pods/{podname}/upgrade – Instructs YurtHub to delete the specified Pod, causing the DaemonSet controller to recreate it with the new version. Replace {ns} and {podname} with the Pod’s namespace and name.
Other Changes in v1.1.0
The release also contains miscellaneous bug fixes and improvements. Full changelog and commit history are available on the OpenYurt GitHub releases page.
References
OpenYurt project homepage: https://openyurt.io/
Proposal for Auto and OTA DaemonSet upgrade models: https://github.com/openyurtio/openyurt/blob/master/docs/proposals/20220718-workload-update-model.md
Kubernetes DaemonSet documentation: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/
OpenYurt v1.1.0 release notes: https://github.com/openyurtio/openyurt/releases
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Alibaba Cloud Native
We publish cloud-native tech news, curate in-depth content, host regular events and live streams, and share Alibaba product and user case studies. Join us to explore and share the cloud-native insights you need.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
