Karmada
v1.17.6Orchestration & ManagementA cumulative maintenance release that adds workload affinity and encryption-at-rest capabilities, improves controller performance and correctness, and updates dependencies, images, and Helm support. It also removes deprecated interfaces and changes some defaults.
Check if affected (4)
breakingThe
GroupByLabelKeysetting inWorkloadAffinityApplies if you configure
WorkloadAffinityandGroupByLabelKey.karmada-webhooknow disallows using the sameGroupByLabelKeyforaffinityandantiAffinityinWorkloadAffinity.breakingThe
--etcd-init-imageflagApplies if you use
--etcd-init-image.karmadactlhas removed the deprecated--etcd-init-imageflag from theinitcommand.breakingUpdated default
kube-apiserver,kube-controller-manager, andETCDimagesApplies if you depend on
kube-apiserver,kube-controller-manager, orETCD.The default
kube-apiserverandkube-controller-managerimages are updated from v1.34.1 to v1.35.2. The defaultETCDimage is updated from 3.6.0-0 to 3.6.6-0.breakingThe
ControllerPriorityQueuefeatureApplies if you enable
ControllerPriorityQueue.The
ControllerPriorityQueuefeature is promoted to beta and enabled by default.
Plan ahead (5)
deprecatedThe
--cluster-lease-durationand--cluster-lease-renew-interval-fractionflagsdeprecated since v1.17.0 · removal date not announcedApplies if you use
--cluster-lease-durationor--cluster-lease-renew-interval-fraction.karmada-controller-managerdeprecates the flags--cluster-lease-durationand--cluster-lease-renew-interval-fraction.deprecatedThe
Etcd.configuration fielddeprecated since v1.17.0 · removal date not announcedLocal. InitImage karmadactldeprecatesEtcd.inLocal. InitImage Karmada Init Configuration.deprecatedThe
--cluster-lease-durationflagremoval date not announcedApplies if you use
--cluster-lease-duration.The flag
--cluster-lease-durationis deprecated and will be removed in a future release.deprecatedThe
--cluster-lease-renew-interval-fractionflagremoval date not announcedApplies if you use
--cluster-lease-renew-interval-fraction.The flag
--cluster-lease-renew-interval-fractionis deprecated and will be removed in a future release.deprecatedThe
Etcd.configuration fieldremoval date not announcedLocal. InitImage Applies if you configure
Etcd..Local. InitImage Etcd.inLocal. InitImage Karmada Init Configurationis deprecated and will be removed in a future version.
All 83 other recorded changesfixes 41 · value changes 21 · additions 19 · constraints 1 · defaults 1
fixes (41)
- -
karmada-controller-manager: Fixed an issue where the taint-manager eviction queue would enqueue bindings with indefinite taint tolerations. ([#7773](https://github.com/karmada-io/karmada/pull/7773), @karmada-bot) - -
karmada-controller-manager: Fixed an issue whereCluster.could remain stale after an associatedstatus. remedyActions Remedyresource was removed. ([#7789](https://github.com/karmada-io/karmada/pull/7789), @karmada-bot) - -
helm chart: Fixed TLS certificate SAN mismatch when deploying to a custom namespace by adding systemNamespace SANs to certs.auto.hosts. ([#7687](https://github.com/karmada-io/karmada/pull/7687), @karmada-bot) - -
karmada-operator-chart: Fixed issue with embedding theKarmadaCRD, which has exceeded the config map size limit, into a config map used by the chart CRD installation/upgrade job, that prevented users from upgrading the chart. ([#7484](https://github.com/karmada-io/karmada/pull/7484), @jabellard) - -
karmada-search: Fixed the issue that watch connect cannot reflect resources from recovered clusters immediately. ([#7523](https://github.com/karmada-io/karmada/pull/7523), @Ady0333) - -
karmada-scheduler: Fixed the issue when cluster resources are insufficient, multiple template resources can still be scheduled. ([#7579](https://github.com/karmada-io/karmada/pull/7579), @jabellard) - -
karmada-controller-manager: Fixed the issue that a transientClusterClientSetFuncfailure (e.g. missingSecretRefduring credential rotation) would immediately set the clusterReady=Falsewithout respectingClusterFailureThreshold, potentially triggering unnecessary workload failover. ([#7569](https://github.com/karmada-io/karmada/pull/7569), @zhangsquared) - -
karmada-operator: Fixed the issue that the operator did not applytolerationsandaffinitysettings tokarmada-aggregated-apiserverandkarmada-searchdeployments when configured via the Karmada CR. ([#7451](https://github.com/karmada-io/karmada/pull/7451), @jabellard) - -
karmada-operator: Fixed init reconciliation failure by replacing non-idempotent secret creation with an idempotent approach. ([#7406](https://github.com/karmada-io/karmada/pull/7406), @anr) - -
karmada-scheduler: Fixed an issue where the schedule success event was missing cluster information when scheduling withClusterAffinities. ([#7418](https://github.com/karmada-io/karmada/pull/7418), @cotishq) - -
karmada-scheduler: Fixed incorrect error type propagation that caused bindings with insufficient cluster replicas to be misrouted tobackoffQinstead ofunschedulableBindings. ([#7353](https://github.com/karmada-io/karmada/pull/7353), @SujoyDutta) - - Fixed the issue that
Jobcompletions were assigned to the wrong replicas for each cluster. ([#7397](https://github.com/karmada-io/karmada/pull/7397), @Ady0333) - -
karmada-agent: Fixed the issue where certificate rotation CSRs were never auto-approved due to a SignerName mismatch betweencert_rotation_controllerandagent_csr_approving. ([#7311](https://github.com/karmada-io/karmada/pull/7311), @Denyme24) - -
karmada-chart: Fixed unrendered{{ ca_crt }}during upgrades. ([#7331](https://github.com/karmada-io/karmada/pull/7331), @AbhinavPInamdar) - -
karmada-controller-manager: Fixed a race condition where graceful eviction tasks could be silently dropped when multiple controllers concurrently modify the same ResourceBinding or ClusterResourceBinding, preventing workloads from being evacuated from tainted or failing clusters. ([#7308](https://github.com/karmada-io/karmada/pull/7308), @Ady0333) - -
openapi schema: Fixed the unknown model error by using fully qualified model names as OpenAPI model names instead of Go type names. ([#7301](https://github.com/karmada-io/karmada/pull/7301), @zhzhuang-zju) - -
karmada-controller-manager: Fixed the issue where the job status aggregator could enter an error loop due to a race condition when setting the initialstartTime. ([#7138](https://github.com/karmada-io/karmada/pull/7138), @zhzhuang-zju) - -
karmada-controller-manager: Fixed CronFederatedHPA scale-up from zero failure when the replicas field is missing. ([#7183](https://github.com/karmada-io/karmada/pull/7183), @zhengjr9) - -
karmada-controller-manager: Fixed an issue where a per-taskGracePeriodSecondsvalue could leak to subsequent graceful eviction tasks, causing premature or delayed evictions. ([#7184](https://github.com/karmada-io/karmada/pull/7184), @Ady0333) - -
karmada-controller-manager: Fixed an issue where dependency updates could overwrite other controller annotations during retry conflicts. ([#7208](https://github.com/karmada-io/karmada/pull/7208), @Ady0333) - -
karmada-controller-manager: Fixed an issue where policy deletion could be blocked if a resource selector targeted a non-existent resource. ([#7038](https://github.com/karmada-io/karmada/pull/7038), @zhzhuang-zju) - -
karmada-controller-manager: Fixed the issue thatHelmReleasedid not defineobservedGenerationvariable in thestatusAggregationoperation. ([#7057](https://github.com/karmada-io/karmada/pull/7057), @FAUST-BENCHOU)×2 - -
karmada-scheduler: Fixed a scheduler panic caused by a divide-by-zero error when calculating spread constraints with no valid clusters. ([#7154](https://github.com/karmada-io/karmada/pull/7154), @Aman-Cool) - -
karmada-scheduler: Fixed an issue that prevented multi-component workloads from being rescheduled during cluster failover events. ([#7066](https://github.com/karmada-io/karmada/pull/7066), @mszacillo) - -
karmada-scheduler: Fixed the issue thatdynamicScaleDownused stale clusters for scale-down operations. ([#7110](https://github.com/karmada-io/karmada/pull/7110), @zhzhuang-zju) - -
karmada-scheduler: Fixed the bug in the backoff queue where the sorting function was incorrect, potentially causing high-priority items with long backoffs to block lower-priority items. ([#6987](https://github.com/karmada-io/karmada/pull/6987), @rayo1uo) karmada-scheduler-estimator: Fixed the issue where the resource quota plugin failed to list resource quotas due to a missing namespace in the gRPC request.karmadactl: Fixed the messy auto-completion suggestions for commands likegetandapply.karmada-webhook: Fixed an issue where thecondition.was not set toreason QuotaExceededwhen FederatedResourceQuota is exceeded.- Fixed the issue where the job status aggregator could enter an error loop due to a race condition when setting the initial
startTime. - Fixed CronFederatedHPA scale-up from zero failure when the replicas field is missing.
- Fixed an issue where a per-task
GracePeriodSecondsvalue could leak to subsequent graceful eviction tasks, causing premature or delayed evictions. - Fixed a scheduler panic caused by a divide-by-zero error when calculating spread constraints with no valid clusters.
- Fixed an issue that prevented multi-component workloads from being rescheduled during cluster failover events.
- Fixed the issue that
dynamicScaleDownused stale clusters for scale-down operations. - Fixed an issue where policy deletion could be blocked if a resource selector targeted a non-existent resource.
- Fixed the bug in the backoff queue where the sorting function was incorrect, potentially causing high-priority items with long backoffs to block lower-priority items.
- -
karmadactl: Fixed the messy auto-completion suggestions for commands like 'get' and 'apply'. ([#7023](https://github.com/karmada-io/karmada/pull/7023), @zhzhuang-zju) - -
karmada-controller-manager: Fixed the issue where PP/CPP cannot be deleted because the resources API selected by the PP/CPP do not exist on the control plane. ([#7024](https://github.com/karmada-io/karmada/pull/7024), @XiShanYongYe-Chang) - Fixed the issue where PP/CPP cannot be deleted
value changes (21)
- - The base image
alpinehas been promoted fromalpine:3.to23. 4 alpine:3.to address security concerns. ([#7629](https://github.com/karmada-io/karmada/pull/7629), @dependabot; [#7653](https://github.com/karmada-io/karmada/pull/7653), @dependabot)24. 1 - - The base image
alpinehas been promoted fromalpine:3.to23. 3 alpine:3.to address security concerns. ([#7414](https://github.com/karmada-io/karmada/pull/7414), @dependabot)23. 4 - It is now promoted to **Beta** and **enabled by default**.
- This optimization reduced the initial controller startup and queue processing time from **over 20 minutes to approximately 5 minutes**, ensuring faster response and greater system stability.
- -
karmada-controller-manager: PopulatedResourceBindingwithWorkloadAffinityfields. ([#7166](https://github.com/karmada-io/karmada/pull/7166), @dahuo98) - -
karmada-operator: Supported explicit tolerations and affinity for all Karmada control plane components via theKarmadaCR. ([#6480](https://github.com/karmada-io/karmada/pull/6480), @abhinav-1305) - -
karmada-operator: The defaultkube-apiserverandkube-controller-managerimages have been updated from v1.34.1 to v1.35.2. And the defaultETCDImage has been updated from 3.6.0-0 to 3.6.6-0. ([#7229](https://github.com/karmada-io/karmada/pull/7229), @RainbowMango) - -
karmada-scheduler: Improved scheduling consistency for workload affinity groups during rapid scheduling cycles by introducing a dedicated cache for recently committedResourceBindings. ([#7221](https://github.com/karmada-io/karmada/pull/7221), @zhzhuang-zju, @mszacillo) - Upgraded Kubernetes dependencies to
v1..35. 0 - Promoted the base image
alpinefromalpine:3.to22. 2 alpine:3..23. 3 - Karmada is now built with Golang ….×2
Helm Chart: Upgradedbitnami/commondependency in karmada operator chart from1.to17. 1 2..31. 4 - The metric
work_sync_workload_duration_secondsno longer counts retriable Kubernetes 409 conflicts as errors, improving availability accuracy and reducing false alerts caused by conflict retry flapping. karmada-controller-manager: Optimized the mechanism ofcreateorupdatedependencies-distribute ResourceBinding.- Populated
ResourceBindingandClusterResourceBindingwithWorkloadAffinityfields. - Introduced
TolerationsandAffinityfields to theCommonSettingsofKarmadaAPI for supporting explicit tolerations and affinity for Karmada control plane components. - - Kubernetes dependencies have been updated to
v1.. ([#6999](https://github.com/karmada-io/karmada/pull/6999), @RainbowMango)34. 2 - - The base image
alpinehas been promoted fromalpine:3.to22. 2 alpine:3.. ([#7001](https://github.com/karmada-io/karmada/pull/7001), @dependabot)23. 0 - - The base image
alpinehas been promoted fromalpine:3.to23. 0 alpine:3.. ([#7034](https://github.com/karmada-io/karmada/pull/7034), @dependabot)23. 2 - -
helm: Upgradedbitnami/commondependency in karmada operator chart from1.to17. 1 2.. ([#6994](https://github.com/karmada-io/karmada/pull/6994), @zhzhuang-zju)31. 4
additions (19)
- Karmada provides rich and powerful cluster-oriented scheduling capabilities. However, many applications have explicit inter-workload placement requirements for high availability, latency optimization, cost efficiency, and operational isolation. To address these deployment needs, this release introduces **workload affinity and anti-affinity**, a powerful scheduling feature that gives you fine-grained control over how workloads are placed across clusters.
- - Introduced
WorkloadAffinitytoPropagationPolicyAPI to support affinity and anti-affinity workload scheduling. ([#7131](https://github.com/karmada-io/karmada/pull/7131), @mszacillo) - - Introduced
WorkloadAffinityGroupstoResourceBinding/ClusterResourceBinding, which will be used to hold instantiated grouping results. ([#7144](https://github.com/karmada-io/karmada/pull/7144), @RainbowMango) - -
karmada-operator: IntroducedTolerationsandAffinityfields to theCommonSettingsofKarmadaAPI for supporting explicit tolerations and affinity for Karmada control plane components. ([#6480](https://github.com/karmada-io/karmada/pull/6480), @abhinav-1305) - -
karmada-operator: Added support for configuring priority class and pod disruption budget config for Karmada operator deployment. ([#7015](https://github.com/karmada-io/karmada/pull/7015), @jabellard) - -
karmada-resource-interpreter: AddedRayServiceinterpreter support. ([#7102](https://github.com/karmada-io/karmada/pull/7102), @seanlaii) - -
karmada-scheduler: Added optionalFilterPluginWithContext(FilterWithContextmethod) for filter plugins, and introduced aWorkloadAntiAffinityfilter plugin gated by theWorkloadAffinityfeature gate. ([#7177](https://github.com/karmada-io/karmada/pull/7177), @RainbowMango) - Enhanced the security posture of Karmada by integrating encryption-at-rest capabilities for the karmada-apiserver.
Helm Chart: Added helm index for 1.16 release.- Added optional
FilterPluginWithContext(FilterWithContextmethod) for filter plugins - introduced a
WorkloadAntiAffinityfilter plugin gated by theWorkloadAffinityfeature gate. - Implemented workload affinity and anti-affinity filter plugins to support co-locating workloads in the same
AffinityGroupor isolating workloads in the sameAntiAffinityGroupacross clusters. - Introduced
WorkloadAffinitytoPropagationPolicyAPI to support affinity and anti-affinity workload scheduling. - Introduced
WorkloadAffinityGroupstoResourceBinding/ClusterResourceBinding, which will be used to hold instantiated grouping results. - Introduced
WorkloadAffinityfeature gate, default to false. - Added support for configuring priority class and pod disruption budget config for Karmada operator deployment.×2
- -
Helm chart: Added helm index for 1.16 release. ([#6990](https://github.com/karmada-io/karmada/pull/6990), @zhzhuang-zju) - Introduced
WorkloadAffinityfeature gate
constraints (1)
- -
karmada-webhook: Addednamespacevalidation forspec.inresourceSelectors PropagationPolicyandOverridePolicyto prevent unintended cross-namespace resource selection. ([#7176](https://github.com/karmada-io/karmada/pull/7176), @zhzhuang-zju)
defaults (1)
- It is now promoted to **Beta** and **enabled by default**.
A weekly email arrives when a release needs action. Like the breaking changes in this release.