github openyurtio/openyurt v1.7.0

8 hours ago

What's New

OTA Upgrade Supports Image Preheating for DaemonSet

OTA (Over-The-Air) upgrade is a new upgrade model for DaemonSet workloads introduced by OpenYurt. In previous versions, image pulling occurred synchronously during the Pod restart phase of the upgrade, making it a critical-path operation that directly contributed to service downtime, especially in edge environments with limited or unstable network connectivity.

In v1.7.0, OTA upgrade now supports image preheating, which decouples image pulling from the actual rollout cutover. A new ImagePreHeat controller is responsible for dispatching image preheating Jobs to edge nodes, allowing updated container images to be proactively downloaded before the upgrade is triggered. Two new Pod conditions (PodNeedUpgrade and PodImageReady) are introduced to track upgrade status and image readiness. Users can initiate preheating via a new OTA API endpoint (POST /openyurt.io/v1/namespaces/{ns}/pods/{podname}/imagepull). By pre-caching images ahead of the cutover, service interruption during the actual upgrade is minimized to near-zero.
#2482
#2474

Support Deploying Kubernetes Clusters Locally (K8s-on-K8s)

OpenYurt v1.7.0 introduces the ability to deploy a Kubernetes cluster on top of an existing OpenYurt cluster — referred to as K8s-on-K8s. This is particularly useful for scenarios such as testing, multi-tenant isolation, and edge IDC (Internet Data Center) deployments where a full bare-metal Kubernetes setup is not practical.

This release adds YAML-based templates for deploying tenant control-plane components (tenant-apiserver, tenant-controller-manager, tenant-scheduler, tenant-pki-generator, etcd) along with post-install configuration (kube-proxy, kubelet, rbac, bootstrap-secret). yurtadm now supports a local mode for joining IDC nodes into a K8s-on-K8s cluster, and YurtHub is optimized for local mode operation. A setup script (config/setup/K8s-on-K8s/setup.sh) is also provided for quick bootstrapping.
#4a1f0ab3
#ed2f7dbf
#3a03b00d

Label-Driven YurtHub Deployment via YurtNodeConversion

Previously, YurtHub installation and lifecycle management on edge nodes required manual intervention through yurtadm join or yurtadm reset commands. In v1.7.0, a new YurtNodeConversionController in yurt-manager enables label-driven YurtHub deployment and conversion. By applying a label to a node, users can trigger the automatic installation, configuration, and startup of YurtHub via systemd. The conversion and revert process now uses reusable host lifecycle helpers, enabling a fully declarative, controller-driven workflow for edge node onboarding and offboarding.
#249a6714
#f7645df8
#3e02cefa

Support Kubernetes v1.34

All k8s.io/xxx dependencies and related modules have been upgraded to v1.34.0, ensuring OpenYurt is fully compatible with Kubernetes v1.34. E2E testing has been updated to validate the upgrade against a Kubernetes v1.34 cluster. This upgrade also includes vendor dependency updates and Go linting fixes for compatibility with the latest toolchain.
#5cccf119
#7589921e

Other Notable changes

Fixes

  • Always overwrite server-addr in yurt-static-set-yurt-hub configmap by yurtadm by @rayne-Li in #2271
  • Test: fix nodepool e2e test by @tnsimon in #2283
  • Fix openyurt fuzz test by @tnsimon in #2319
  • Fix issue 2253 by @RG-Dou in #2330
  • Ensure hub leader configmap is deleted with nodepool by @tnsimon in #2324
  • Fix ota controller doesn't has permission to patch pod status by @PersistentJZH in #2415
  • Fix: Fix the issue where the masterservice and serviceenvupdater modified the multiplexer cache by @zyjhtangtang in #2481
  • Fix dummy-if name length exceeds 15 by @KubeKyrie in #2486
  • Bugfix: remove deprecated rand.Seed() calls by @shiavm006 in #2499
  • Fix: race condition in cache manager's inMemoryCache by @Shivam Mittal in #2508
  • Fix: restore from backup and return error on ReplaceComponentList create/write failure by @Shivam Mittal in #2507
  • Fix NodeAutonomy condition LastTransitionTime never being updated by @aman Kumar in #2502
  • Fix: guard nil request info in autonomy proxy by @Shivam Mittal in #2517
  • Fix: nil pointer dereference in local proxy (localDelete/localPost) by @Shivam Mittal in #2515
  • Fix: avoid panic on pod without owner refs by @zyjhtangtang in #2509
  • Fix: add unit test cases for modifyresponse by @kartik angiras in #2497
  • Fix/UT error by @tnsimon in #2535

Proposals

New Contributors

Full Changelog: v1.6.0...v1.7.0

Don't miss a new openyurt release

NewReleases is sending notifications on new releases.