Skip to content

Karmada

Kubernetes-native control plane that propagates and schedules workloads across many clusters and clouds.

  • Category: Orchestration & Scheduling
  • CNCF maturity: Incubating
  • Language: Go
  • License: Apache-2.0
  • Repository: karmada-io/karmada
  • Documented at commit: 658499d (2026-06-22, master, near tag v1.19.0-alpha.0)

What it is

Karmada runs a dedicated control plane (its own karmada-apiserver plus etcd) where you store plain Kubernetes resource templates (a normal Deployment, Service, and so on) alongside Karmada's own CRDs. You register member clusters, then declare where each template should go with a PropagationPolicy. Karmada copies and schedules the workload into the chosen clusters. The application manifests stay unchanged.

The system works in two modes. In Push mode the control plane reaches out to each member cluster's API directly. In Pull mode a karmada-agent runs inside the member cluster and pulls work toward itself, which suits clusters the control plane cannot reach over the network.

It is the successor to the deprecated KubeFed effort. Beyond simple copying, Karmada adds cross-cluster scheduling: it can split a single Deployment's replicas across clusters by weight or available capacity, apply per-cluster overrides, and reschedule when capacity changes. A Lua-based resource interpreter lets you teach Karmada about arbitrary CRDs without recompiling Go.

When to use it

  • You run workloads across several Kubernetes clusters (multi-region, multi-cloud, or on-prem plus cloud) and want one place to declare and schedule them.
  • You want to split a workload's replicas across clusters by static weight or by real available capacity, not just pin it to one cluster.
  • You need per-cluster customization (image registry, replica counts, env) on top of a shared template via override policies.
  • You manage non-Deployment CRDs (Flink, Ray, Kubeflow jobs) and want them spread across clusters without changing the operator.

When a single cluster is enough, or when you only need GitOps-style delivery to a few statically labelled clusters, the extra control plane is overhead you do not need.

In this deep-dive

Sources

  1. karmada-io/karmada (README, code), accessed 2026-06-24.
  2. Karmada Adopters, accessed 2026-06-24.
  3. Karmada website, accessed 2026-06-24.
  4. Karmada brings Kubernetes multi-cloud capabilities to CNCF Incubator, CNCF blog, accessed 2026-06-24.
  5. Karmada CNCF project page, accessed 2026-06-24.
  6. Karmada and Open Cluster Management: two new approaches, CNCF blog, accessed 2026-06-24.
  7. Karmada launches Adopter Group, CNCF blog, accessed 2026-06-24.
  8. GitHub REST API: repos/karmada-io/karmada, accessed 2026-06-24.