RATATOSKRATATOSK
Sign in

Karmada

v1.17.6Orchestration & Management
Aug 31, 2026

CHECK 4PLAN 5OTHER 83

A 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 GroupByLabelKey setting in WorkloadAffinity

    Applies if you configure WorkloadAffinity and GroupByLabelKey.

    karmada-webhook now disallows using the same GroupByLabelKey for affinity and antiAffinity in WorkloadAffinity.

    karmada#7222

  • breakingThe --etcd-init-image flag

    Applies if you use --etcd-init-image.

    karmadactl has removed the deprecated --etcd-init-image flag from the init command.

    karmada#6974

  • breakingUpdated default kube-apiserver, kube-controller-manager, and ETCD images

    Applies if you depend on kube-apiserver, kube-controller-manager, or ETCD.

    The default kube-apiserver and kube-controller-manager images are updated from v1.34.1 to v1.35.2. The default ETCD image is updated from 3.6.0-0 to 3.6.6-0.

  • breakingThe ControllerPriorityQueue feature

    Applies if you enable ControllerPriorityQueue.

    The ControllerPriorityQueue feature is promoted to beta and enabled by default.

Plan ahead (5)

  • deprecatedThe --cluster-lease-duration and --cluster-lease-renew-interval-fraction flagsdeprecated since v1.17.0 · removal date not announced

    Applies if you use --cluster-lease-duration or --cluster-lease-renew-interval-fraction.

    karmada-controller-manager deprecates the flags --cluster-lease-duration and --cluster-lease-renew-interval-fraction.

    karmada#7126

  • deprecatedThe Etcd.Local.InitImage configuration fielddeprecated since v1.17.0 · removal date not announced

    karmadactl deprecates Etcd.Local.InitImage in Karmada Init Configuration.

    karmada#6995

  • deprecatedThe --cluster-lease-duration flagremoval date not announced

    Applies if you use --cluster-lease-duration.

    The flag --cluster-lease-duration is deprecated and will be removed in a future release.

  • deprecatedThe --cluster-lease-renew-interval-fraction flagremoval date not announced

    Applies if you use --cluster-lease-renew-interval-fraction.

    The flag --cluster-lease-renew-interval-fraction is deprecated and will be removed in a future release.

  • deprecatedThe Etcd.Local.InitImage configuration fieldremoval date not announced

    Applies if you configure Etcd.Local.InitImage.

    Etcd.Local.InitImage in Karmada Init Configuration is 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 where Cluster.status.remedyActions could remain stale after an associated Remedy resource 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 the Karmada CRD, 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 transient ClusterClientSetFunc failure (e.g. missing SecretRef during credential rotation) would immediately set the cluster Ready=False without respecting ClusterFailureThreshold, 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 apply tolerations and affinity settings to karmada-aggregated-apiserver and karmada-search deployments 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 with ClusterAffinities. ([#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 to backoffQ instead of unschedulableBindings. ([#7353](https://github.com/karmada-io/karmada/pull/7353), @SujoyDutta)
  • - Fixed the issue that Job completions 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 between cert_rotation_controller and agent_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 initial startTime. ([#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-task GracePeriodSeconds value 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 that HelmRelease did not define observedGeneration variable in the statusAggregation operation. ([#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 that dynamicScaleDown used 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 like get and apply.
  • karmada-webhook: Fixed an issue where the condition.reason was not set to QuotaExceeded when 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 GracePeriodSeconds value 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 dynamicScaleDown used 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 alpine has been promoted from alpine:3.23.4 to alpine:3.24.1 to address security concerns. ([#7629](https://github.com/karmada-io/karmada/pull/7629), @dependabot; [#7653](https://github.com/karmada-io/karmada/pull/7653), @dependabot)
  • - The base image alpine has been promoted from alpine:3.23.3 to alpine:3.23.4 to address security concerns. ([#7414](https://github.com/karmada-io/karmada/pull/7414), @dependabot)
  • 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: Populated ResourceBinding with WorkloadAffinity fields. ([#7166](https://github.com/karmada-io/karmada/pull/7166), @dahuo98)
  • - karmada-operator: Supported explicit tolerations and affinity for all Karmada control plane components via the Karmada CR. ([#6480](https://github.com/karmada-io/karmada/pull/6480), @abhinav-1305)
  • - karmada-operator: The default kube-apiserver and kube-controller-manager images have been updated from v1.34.1 to v1.35.2. And the default ETCD Image 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 committed ResourceBindings. ([#7221](https://github.com/karmada-io/karmada/pull/7221), @zhzhuang-zju, @mszacillo)
  • Upgraded Kubernetes dependencies to v1.35.0.
  • Promoted the base image alpine from alpine:3.22.2 to alpine:3.23.3.
  • Karmada is now built with Golang ….×2
  • Helm Chart: Upgraded bitnami/common dependency in karmada operator chart from 1.17.1 to 2.31.4.
  • The metric work_sync_workload_duration_seconds no 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 of create or update dependencies-distribute ResourceBinding.
  • Populated ResourceBinding and ClusterResourceBinding with WorkloadAffinity fields.
  • Introduced Tolerations and Affinity fields to the CommonSettings of Karmada API for supporting explicit tolerations and affinity for Karmada control plane components.
  • - Kubernetes dependencies have been updated to v1.34.2. ([#6999](https://github.com/karmada-io/karmada/pull/6999), @RainbowMango)
  • - The base image alpine has been promoted from alpine:3.22.2 to alpine:3.23.0. ([#7001](https://github.com/karmada-io/karmada/pull/7001), @dependabot)
  • - The base image alpine has been promoted from alpine:3.23.0 to alpine:3.23.2. ([#7034](https://github.com/karmada-io/karmada/pull/7034), @dependabot)
  • - helm: Upgraded bitnami/common dependency in karmada operator chart from 1.17.1 to 2.31.4. ([#6994](https://github.com/karmada-io/karmada/pull/6994), @zhzhuang-zju)

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 WorkloadAffinity to PropagationPolicy API to support affinity and anti-affinity workload scheduling. ([#7131](https://github.com/karmada-io/karmada/pull/7131), @mszacillo)
  • - Introduced WorkloadAffinityGroups to ResourceBinding/ClusterResourceBinding, which will be used to hold instantiated grouping results. ([#7144](https://github.com/karmada-io/karmada/pull/7144), @RainbowMango)
  • - karmada-operator: Introduced Tolerations and Affinity fields to the CommonSettings of Karmada API 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: Added RayService interpreter support. ([#7102](https://github.com/karmada-io/karmada/pull/7102), @seanlaii)
  • - karmada-scheduler: Added optional FilterPluginWithContext (FilterWithContext method) for filter plugins, and introduced a WorkloadAntiAffinity filter plugin gated by the WorkloadAffinity feature 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 (FilterWithContext method) for filter plugins
  • introduced a WorkloadAntiAffinity filter plugin gated by the WorkloadAffinity feature gate.
  • Implemented workload affinity and anti-affinity filter plugins to support co-locating workloads in the same AffinityGroup or isolating workloads in the same AntiAffinityGroup across clusters.
  • Introduced WorkloadAffinity to PropagationPolicy API to support affinity and anti-affinity workload scheduling.
  • Introduced WorkloadAffinityGroups to ResourceBinding/ClusterResourceBinding, which will be used to hold instantiated grouping results.
  • Introduced WorkloadAffinity feature 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 WorkloadAffinity feature gate

constraints (1)

  • - karmada-webhook: Added namespace validation for spec.resourceSelectors in PropagationPolicy and OverridePolicy to 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**.
Add Karmada to your stack

A weekly email arrives when a release needs action. Like the breaking changes in this release.

Add to stack