Skip to content

karmada v1.5.0 release

Compare
Choose a tag to compare
@RainbowMango RainbowMango released this 28 Feb 12:02
· 64 commits to release-1.5 since this release
51fbbb0

What's New

Multiple Scheduling Groups

Users are now able to declare multiple groups of clusters to both PropagationPolicy and ClusterPropagationPolicy by leveraging the newly introduced ClusterAffinities field. The scheduler will evaluate these groups one by one in the order they appear in the specification until it finds the one that satisfies scheduling restrictions.

This feature allows the Karmada scheduler to first schedule applications to lower-cost clusters or migrate applications from a primary cluster to backup clusters in the case of cluster failure.

See multiple scheduling group proposal for more info.

(Feature contributor: @XiShanYongYe-Chang @RainbowMango)

New Way to Customize Scheduler

The default scheduler is now able to work with any number of third-party customized schedulers. Similar to Kubernetes, the workloads will be scheduled by the default scheduler if the scheduler name is not declared in PropagationPolicy or ClusterPropagationPolicy.

See customize scheduler for more details.

(Feature contributor: @Poor12)

Other Notable Changes

API Changes

  • Introduced Affinities to both PropagationPolicy and ClusterPropagationPolicy. (#3105, @RainbowMango)
  • Introduced Placement to the ResoureBinding/ClusterResourceBinding API. (#2702, @Poor12)
  • Introduced SchedulerObservedAffinityName to both ResourceBinding and ClusterResourceBinding. (#3163, @RainbowMango)

Bug Fixes

  • karmadactl: Fixed the issue that karmada-agent installed by the register command cannot delete works due to lack of permissions. (#2902, @lonelyCZ)
  • karmadactl: Fixed the issue that the default ValidatingWebhookConfiguration for resourceinterpreterwebhook was not working. (#2915, @whitewindmills)
  • karmadactl: Fixed the issue that the default ValidatingWebhookConfiguration for resourceinterpretercustomizations was not working. (#2916, @chaunceyjiang)
  • karmadactl: Fixed the error of resources whose name contains colons failed to be created when using karmadactl apply. (#2919, @Poor12)
  • karmadactl init: Granted karmada-agent permissions to access resourceinterpretercustomizations. (#2984, @jwcesign)
  • karmada-controller-manager: Generated PolicyRules from given subjects for impersonation deduplicate. (#2911, @yanfeng1992)
  • karmada-controller-manager/karmada-agent: Fixed the failure to sync work status due to the informer being accidentally shut down. (#2930, @Poor12)
  • karmada-controller-manager/karmada-agent: Fixed misjudgment of deployment and statefuleset health status. (#2928, @Fish-pro)
  • karmada-controller-manager: Fixed LabelsOverrider and AnnotationsOverrider failures to add new items in the case of null label/annotation. (#2971, @chaunceyjiang)
  • karmada-controller-manager: labelsOverrider/annotationsOverrider supports composed-labels, like testannotation/projectId: . (#3037, @chaunceyjiang)
  • karmada-controller-manager: Fixed the issue that RBAC resources whose name contains uppercase characters cannot be propagated. (#3201, @whitewindmills)
  • karmada-agent: Check whether the resource exists before creating it. Sometimes the resource is created in advance, giving less privilege to Karmada. (#2988, @jwcesign)
  • karmada-scheduler: Fixed a corner case that re-scheduling was skipped in the case that the cluster becomes not fit. (#2912, @jwcesign)
  • karmada-search: Filtered out not-ready clusters. (#3010, @yanfeng1992)
  • karmada-search: Avoided proxy request block when member clusters were down. (#3027, @ikaven1024)
  • karmada-webhook: Validated replicaSchedulingType and replicaDivisionPreference. (#3014, @chaunceyjiang)
  • karmada-webhook: Fixed the issue that the InterpretDependency operation cannot be registered. (#3052, @whitewindmills)
  • karmada-search: Supported pod subresource (attach, exec, port-forward) through global proxy. (#3098, @ikaven1024)

Security

Features & Enhancements

  • karmadactl: Introduced --kube-image-tag flag to the init command to specify the Kubernetes image version. (#2840, @helen-frank)
  • karmadactl: The --cluster-context flag of join command now takes current-context by default. (#2956, @helen-frank)
  • karmadactl: Added edit mode for interpret commands. (#2831, @ikaven1024)
  • karmadactl: Introduced --cert-validity-period for init to make the validity period of cert configurable. (#3156, @lonelyCZ)
  • karmada-controller-manager: Now the OverridePolicy and ClusterOverridePolicy will be applied by implicit priority order. The one with the lower priority will be applied before the one with the higher priority. (#2609)
  • karmada-controller-manager: Users are now able to apply multiple dependencies interpreter configurations. (#2884, @XiShanYongYe-Chang)
  • karmada-controller-manager: Built-in interpreter supports StatefulSets. (#3009, @chaunceyjiang)
  • karmada-controller-manager: Retained the labels added to resources by member clusters. (#3088, @chaunceyjiang)
  • karmada-controller-manager: Default interpreter supports CronJob aggregated status. (#3129, @chaunceyjiang)
  • karmada-controller-manager: Supports PodDisruptionBudget resource in default interpreter. (#2997, @a7i)
  • karmada-controller-manager: Support for removing annotations/labels propagated through karmada. (#3099, @chaunceyjiang)
  • karmada-webhook: Added validation for policy.spec.placement.orderedClusterAffinities. (#3164, @XiShanYongYe-Chang)
  • karmada-webhook: Validated the fieldSelector of overridepolicy. (#3193, @chaunceyjiang)

Other

Dependencies

  • Kubernetes images will now be pulled from registry.k8s.io instead of k8s.gcr.io, to be in alignment with current community initiatives. (#2882, @Zhuzhenghao)
  • Karmada is now built with Golang 1.19.4. (#2908, @qingwave)
  • Karmada is now built with Golang 1.19.5. (#3067, @yanggangtony)
  • Karmada is now built with Kubernetes v1.26.1 dependencies. (#3080, @RainbowMango)
  • The base image alpine now has been promoted from alpine:3.15.1 to alpine:3.17.1. (#3045, @fengshunli)

Helm Chart

  • Fixed helm template missing yaml directive marker to separate API Service resources. (#2963, @a7i)
  • Fixed missing karmada-search helm template strategy. (#2994, @a7i)
  • Fixed karmada-agent helm template strategy indentation. (#2993, @a7i)
  • Chart: karmada-search installation supports specifying an external etcd. (#3120, @my-git9)
  • Chart: Supports custom labels variable for etcd. (#3138, @my-git9)

Instrumentation

  • Instrumentation: Introduced the pool_get_operation_total, pool_put_operation_total metrics to karmada-controller-manager and karmada-agent. (#2883, @ikaven1024)

Contributors

Thank you to everyone who contributed to this release!

Users whose commits are in this release (alphabetically by username)