Karmada核心概念
以下内容为翻译,原文地址 https://karmada.io/zh/docs/next/
一、Karmada核心概念
一)什么是Karmada
1、Karmada:开放,多云,多集群Kubernetes业务流程
Karmada (Kubernetes Armada)是一个Kubernetes管理系统,使您能够跨多个Kubernetes集群和云运行您的云原生应用程序,而无需更改应用程序。通过使用Kubernetes原生api并提供高级调度功能,Karmada实现了真正开放的多云Kubernetes。
Karmada旨在为多云和混合云场景下的多集群应用程序管理提供交钥匙自动化,具有集中式多云管理、高可用性、故障恢复和流量调度等关键功能。
Karmada是云原生计算基金会(CNCF)的一个沙盒项目。
2、为什么使用Karmada
- 兼容k8s 原生API
- 零变化升级,从单点变集群
- 无缝衔接已有的k8s工具链
- 开箱即用
- 内置场景策略集,包括:双活、异地容灾、两地三中心等
- 跨集群应用程序在多集群上自动伸缩、故障转移和负载均衡
- 避免供应商锁定
- 与主流云提供商集成
- 自动分配,跨集群迁移
- 不受专有供应商业务流程的约束
- 集中式管理
- 不确定位置的集群管理
- 支持公有云、预置或边缘的集群
- 高效的多集群调度策略
- 集群亲和性,多集群分裂/再平衡
- 多维HA:区域/AZ/集群/提供商
- 开放和中性
- 由互联网、金融、制造、电信、云等厂商联合发起
- 使用CNCF实现开放治理的目标
注意:本项目是Kubernetes Federation v1和v2的延续。一些基本概念继承自这两个版本。
二)概念
1、资源模板
Karmada为联邦资源模板使用了Kubernetes Native API定义,使其易于与Kubernetes已经采用的现有工具集成。
2、传播策略
Karmada提供了一个独立的传播(放置)策略API来定义多集群调度和传播需求。
- 支持1:n映射策略:工作负载。用户不需要在每次创建联邦应用程序时都指明调度约束。
- 使用默认策略,用户可以直接与Kubernetes API交互。
3、差异化策略
Karmada提供了一个独立的差异化策略API,用于专门化集群相关配置的自动化。例如:
- 基于成员集群区域差异化图像前缀。
- 根据您的云提供商差异化StorageClass。
下图显示了如何将Karmada资源传播到成员集群。
三)架构
1、Karmada整体架构
2、Karmada 控制平面由以下组件组成
- Karmada API Server
- Karmada Controller Manager
- Karmada Scheduler
ETCD存储karmada API对象,API服务器是所有其他组件通信的REST端点,karmada控制器管理器根据您通过API服务器创建的API对象执行操作。
Karmada控制器管理器运行各种控制器,这些控制器监视Karmada对象,然后与底层集群的API服务器通信,以创建常规的Kubernetes资源
- Cluster Controller:将kubernetes集群附加到Karmada,通过创建集群对象来管理集群的生命周期。
- Policy Controller:监视PropagationPolicy对象。当添加一个PropagationPolicy对象时,控制器将选择一组与resourceSelector匹配的资源,并为每个资源对象创建ResourceBinding。
- 绑定控制器:监视ResourceBinding对象,并创建与每个集群对应的Work对象,其中包含单个资源清单。
- 执行控制器:监视工作对象。创建Work对象时,控制器将资源分配给成员集群