17 Star 48 Fork 16

openEuler / eggo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
general_design.md 3.19 KB
一键复制 编辑 原始数据 按行查看 历史
haozi007 提交于 2021-09-26 11:43 . update docs

Eggo方案设计

整体架构

组件说明:

  • GitOps:负责集群配置信息的管理,如更新、创建、删除等;
  • eggops:自定义CRD和controller用于抽象K8S集群,并且通过eggo管理集群生命周期;
  • InitCluster:元集群,eggops运行的K8S集群,作为中心集群管理其他业务集群;
  • master:K8S的master节点,承载集群的控制面;
  • worker:K8S的负载节点,承载用户业务;
  • Cluster A, B, C:业务集群,承载用户业务;

整体方案

eggo_general_design_overall1

Eggo支持三种部署方式:

  • 命令行模式:适用于物理机拉起小规模的K8S集群,用于测试开发使用;
  • gitops模式:适用于通过gitops管理集群配置的场景,管理大量K8S集群的场景;
  • cluster api模式:适用于对接cluster api开源接口;

部署组件

部署组件负责集群的实际部署工作,主要包括如下部分:

  • 基础设施:负责集群节点(物理机、虚拟机等)的准备工作,系统安装、节点间网络互通部署、磁盘安装、依赖组件安装等;
  • 独立ETCD集群部署:ETCD集群独立部署,不在控制面或者工作节点以保证数据的安全;
  • 集群的首个控制面:部署第一个控制面,需要负责证书生成、kubeconfig生成以及组件服务部署等;
  • bootstrap:负责worker节点或者其他控制面节点加入K8S集群的部署工作,证书书拷贝、组件服务部署;
  • upgrade/clean:集群组件升级或者清理;

详细设计

部署组件

Eggo组件交互关系图

detailed_design_1

infrastructure流程

detailed_design_2

etcd集群流程

detailed_design_3

control plane流程

detailed_design_4

bootstrap流程

detailed_design_5

clean流程

detailed_design_6

node-task任务管理机制

旨在统一管理node上执行task,为节点部署集群,提供统一的命令和文件拷贝接口。

模块时序如下:

node-task时许图

类和接口关系如下:

node-task类关系图

证书管理设计

集群的创建、新节点的加入都依赖证书;因此Eggo需要创建、存储和分发CA证书,并且协助节点创建其他依赖的证书;证书管理分为两种场景:

  • 命令行管理集群的场景,需要创建并且本地存储ca证书和admin.kubeconfig,在集群部署master和node节点时分发相应的ca证书;
  • 集群管理集群的场景,需要创建并且根据集群对应的存储ca证书和admin.kubeconfig到元集群的ETCD中,在集群部署master和node节点时分发相应的ca证书;

证书管理流程图如下:

cert-manage

时序关系如下:

detailed_design_cert_manage

1
https://gitee.com/openeuler/eggo.git
git@gitee.com:openeuler/eggo.git
openeuler
eggo
eggo
master

搜索帮助