Karmada — Multi-Cloud & Multi-Cluster Kubernetes Orchestration
CNCF-incubated control plane that turns a fleet of Kubernetes clusters into a single addressable API surface.
What it is
Karmada (Kubernetes Armada) is a CNCF-incubated project that provides a control plane for managing workloads across multiple Kubernetes clusters. It extends the Kubernetes API so you can deploy and manage applications across clouds using familiar kubectl commands.
Karmada targets platform teams running Kubernetes in multiple clouds or regions who need a unified control plane for workload distribution, failover, and resource scheduling.
How it saves time or tokens
Without Karmada, managing workloads across multiple clusters requires per-cluster kubectl contexts, separate deployments, and manual failover scripts. Karmada provides a single API surface with PropagationPolicy resources that declaratively distribute workloads based on cluster labels, weights, and availability.
How to use
- Install the kubectl-karmada plugin and initialize:
kubectl krew install karmada
kubectl karmada init
- Join member clusters:
kubectl karmada join member1 --cluster-kubeconfig=member1.kubeconfig
- Create a PropagationPolicy to distribute workloads:
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
name: distribute-web
spec:
resourceSelectors:
- apiVersion: apps/v1
kind: Deployment
name: web
placement:
clusterAffinity:
clusterNames:
- member1
- member2
replicaScheduling:
replicaSchedulingType: Divided
Example
# Deploy to multiple clusters with one command
kubectl apply -f deployment.yaml --kubeconfig ~/.kube/karmada-apiserver.config
kubectl apply -f propagation-policy.yaml --kubeconfig ~/.kube/karmada-apiserver.config
# Check workload distribution
kubectl get rb -o wide --kubeconfig ~/.kube/karmada-apiserver.config
Related on TokRepo
- DevOps Tools -- Kubernetes and cloud infrastructure tools
- Self-Hosted Tools -- Self-hosted orchestration platforms
Common pitfalls
- Karmada requires a dedicated control plane cluster. This cluster runs the Karmada API server and does not run application workloads.
- Network connectivity between the control plane and member clusters is required. Firewalls must allow the Karmada control plane to reach member cluster API servers.
- PropagationPolicy changes trigger rebalancing. Avoid frequent policy updates that could cause unnecessary workload migrations.
Frequently Asked Questions
Karmada extends the Kubernetes API with multi-cluster resources like PropagationPolicy and OverridePolicy. It uses the Kubernetes API server as its control plane and manages standard Kubernetes resources across member clusters.
Yes. Karmada provides automatic failover. If a member cluster becomes unavailable, workloads are rescheduled to healthy clusters based on the placement configuration in the PropagationPolicy.
Yes. Karmada is cloud-agnostic. You can join clusters from AWS, GCP, Azure, on-premises, or any combination. The control plane communicates with member clusters via standard Kubernetes APIs.
Yes. Karmada is a CNCF incubating project and is used in production by multiple organizations. It was originally developed by Huawei and has active community contributors.
Kubefed is deprecated. Karmada is its spiritual successor with a more mature API, better scheduling algorithms, and active CNCF community support. Karmada provides PropagationPolicy for declarative multi-cluster management.
Citations (3)
- Karmada GitHub— Karmada is a CNCF-incubated multi-cluster Kubernetes management system
- Karmada Documentation— Karmada documentation and user guides
- CNCF— CNCF project lifecycle and incubating criteria
Related on TokRepo
Discussion
Related Assets
NAPI-RS — Build Node.js Native Addons in Rust
Write high-performance Node.js native modules in Rust with automatic TypeScript type generation and cross-platform prebuilt binaries.
Mamba — Fast Cross-Platform Package Manager
A drop-in conda replacement written in C++ that resolves environments in seconds instead of minutes.
Plasmo — The Browser Extension Framework
Build, test, and publish browser extensions for Chrome, Firefox, and Edge using React or Vue with hot-reload and automatic manifest generation.