Open, Multi-Cloud, Multi-Cluster Kubernetes Orchestration
Go to file
Kevin Wang 69d3f1b275 Update README.md 2020-11-20 17:42:21 +08:00
.github Enable golangci-lint github action 2020-11-16 19:18:55 +08:00
artifacts 1. New policy controller. 2. check work exist condition 2020-11-19 11:53:04 +08:00
cluster/images/karmada-controller-manager Add makefile and dockfile 2020-11-11 16:45:49 +08:00
cmd add karmada controll command to help joining a cluster. 2020-11-20 10:09:47 +08:00
docs update README and roadmap 2020-11-20 17:42:21 +08:00
hack Enable golangci-lint static check (#15) 2020-11-16 10:40:41 +08:00
pkg add karmada controll command to help joining a cluster. 2020-11-20 10:09:47 +08:00
vendor add karmada controll command to help joining a cluster. 2020-11-20 10:09:47 +08:00
.gitignore update gitignore 2020-11-10 22:54:35 +08:00
.golangci.yml Disable excluding of issues about comments from golint. 2020-11-18 15:09:12 +08:00
LICENSE Add LICENSE 2020-11-10 19:38:42 +08:00
Makefile add karmada controll command to help joining a cluster. 2020-11-20 10:09:47 +08:00
README.md Update README.md 2020-11-20 17:42:21 +08:00
go.mod add karmada controll command to help joining a cluster. 2020-11-20 10:09:47 +08:00
go.sum Update vendor 2020-11-11 15:48:52 +08:00

README.md

Karmada

Karmada is a multi-cluster management system speaks Kubernetes native API. Karmada aims to provide turnkey automation for multi-cluster application management in multi-cloud and hybrid cloud scenarios, and intended to realize multi-cloud centralized management, high availability, failure recovery and traffic scheduling.

Its key capabilities include:

  • Cross-cluster applications managements based on k8s native API, allow user migrate apps from single cluser to multi-cluster conveniently and quickly.
  • Support provisioning or attaching Kubernetes clusters for centralized operations and management.
  • Cross-cluster applications auto-scaling ,failover and loadbalancing on multi-cluster.
  • Advanced scheduling strategy: region, available zone, cloud provider, cluster affinity/anti-affinity.

Concepts

Architecture

The Karmada Control Plane consists of the following components:

  • ETCD for storing the karmada API objects
  • Karmada API server
  • Karmada Controller Manager
  • Karmada Scheduler

ETCD stores the karmada API objects, the API server is the REST endpoint all other components talk to, and the Karmada Controller Manager perform operations based on the API objects you create through the API server.

The Karmada Controller Manager runs the various controllers, the controllers watch karmada objects and then talk to the underlying clusters API servers to create regular Kubernetes resources.

  1. Cluster Controller: attach kubernetes clusters to Karmada for managing the lifecycle of the clusters by creating membercluster object.

  2. Policy Controller: the controller watches PropagationPolicy objects. When PropagationPolicy object is added, it selects a group of resources matching the resourceSelector and create PropagationBinding with each single resource object.

  3. Binding Controller: the controller watches PropagationBinding object and create PropagationWork object corresponding to each cluster with single resource manifest.

  4. Excution Controller: the controller watches PropagationWork objects.When PropagationWork objects are created, it will distribute the resources to member clusters.

The following figure shows how Karmada resource relate to the objects created in the underlying clusters.

karmada-resource-relation

Features

Guides

Quickstart

User Guide

Development Guide

Community

Code of Conduct