Karmada
v1.17.6Orchestration & Management워크로드 배치 친화도와 저장 데이터 암호화 기능을 더하고, 컨트롤러의 성능과 정확성을 개선한 유지보수 릴리스입니다. 의존성, 이미지, Helm 지원을 갱신하고 일부 기본값을 바꾸는 한편 더 이상 쓰지 않는 인터페이스를 정리했습니다.
영향 확인 (4)
breaking
WorkloadAffinity의 중복GroupByLabelKey설정 제한WorkloadAffinity와GroupByLabelKey를 설정한 경우에 적용됩니다.WorkloadAffinity에서affinity와antiAffinity에 같은GroupByLabelKey를 설정할 수 없도록 제한했습니다.breaking
--etcd-init-image플래그 제거--etcd-init-image를 사용하는 경우에 적용됩니다.karmadactl의init명령에서 더 이상 사용하지 않는--etcd-init-image플래그를 제거했습니다.breaking기본 구성 요소 이미지 버전 갱신
kube-apiserver,kube-controller-manager또는ETCD에 의존하는 경우에 적용됩니다.기본
kube-apiserver및kube-controller-manager이미지를 v1.34.1에서 v1.35.2로, 기본ETCD이미지를 3.6.0-0에서 3.6.6-0으로 갱신했습니다.breaking
ControllerPriorityQueue베타 승격 및 기본 활성화ControllerPriorityQueue를 활성화한 경우에 적용됩니다.ControllerPriorityQueue를 베타 단계로 올리고 기본값으로 활성화했습니다.
미리 준비 (5)
deprecated클러스터 임대 관련 플래그 사용 중단 예고v1.17.0부터 · 제거 시점 미정
--cluster-lease-duration또는--cluster-lease-renew-interval-fraction을 사용하는 경우에 적용됩니다.karmada-controller-manager의--cluster-lease-duration및--cluster-lease-renew-interval-fraction플래그를 더 이상 사용하지 않는 항목으로 지정했으며, 향후 릴리스에서 제거할 예정입니다.deprecated
Etcd.사용 중단 예고v1.17.0부터 · 제거 시점 미정Local. InitImage karmadactl의Karmada Init Configuration에서Etcd.사용을 중단했으며, 향후 버전에서 제거할 예정입니다.Local. InitImage deprecated
--cluster-lease-duration사용 중단 예고제거 시점 미정--cluster-lease-duration을 사용하는 경우에 적용됩니다.--cluster-lease-duration및--cluster-lease-renew-interval-fraction플래그를 더 이상 사용하지 않는 항목으로 지정했으며, 향후 릴리스에서 제거할 예정입니다.deprecated
--cluster-lease-renew-interval-fraction사용 중단 예고제거 시점 미정--cluster-lease-renew-interval-fraction을 사용하는 경우에 적용됩니다.--cluster-lease-duration및--cluster-lease-renew-interval-fraction플래그를 더 이상 사용하지 않는 항목으로 지정했으며, 향후 릴리스에서 제거할 예정입니다.deprecated
Etcd.사용 중단 예고제거 시점 미정Local. InitImage Etcd.를 설정한 경우에 적용됩니다.Local. InitImage Karmada Init Configuration의Etcd.를 더 이상 사용하지 않는 항목으로 지정했으며, 향후 버전에서 제거할 예정입니다.Local. InitImage
그 외 기록된 변경 83건 전체fixes 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**.
조치가 필요한 릴리스가 나왔을 때 주간 메일로 알려드립니다. 이번 릴리스의 브레이킹 체인지 같은 것들입니다.