架构
目录
功能视角
()的完整功能由基于两大技术栈的** Core**和扩展组成:Operator 和 Cluster Plugin。
部署视角
由一个 global
集群 和一个或多个 业务集群 组成。
-
global
集群
- 多集群管理的中心枢纽
- 所有集群必须先注册到
global
,才能被管理
- 承载多集群及跨集群功能
- Kubernetes 由平台部署和管理
-
业务集群
- 承载用户工作负载和服务
- Kubernetes 可能由平台部署,也可能由第三方提供
- 支持主流云厂商的 Kubernetes 服务以及 CNCF 兼容的 Kubernetes 集群
- 某些场景下,
global
集群也可能承载业务工作负载
技术视角
平台组件运行时
所有平台组件均作为容器运行在 Kubernetes 管理集群(即 global
集群)内。
高可用架构
global
集群通常由至少三个控制平面节点和多个工作节点组成
- etcd 的高可用是集群 HA 的核心;详情见关键组件高可用机制
- 负载均衡可由外部负载均衡器或集群内自建 VIP 提供
请求路由
- 客户端请求首先经过负载均衡器或自建 VIP
- 请求转发至运行在指定 ingress 节点(或配置为控制平面节点)的 ALB(平台默认 Kubernetes Ingress Gateway)
- ALB 根据配置规则将流量路由至目标组件 Pod
副本策略
- 核心组件至少运行两个副本
- 关键组件(如 registry、MinIO、ALB)运行三个副本
容错与自愈
- 通过 kubelet、kube-controller-manager、kube-scheduler、kube-proxy、ALB 等组件协作实现
- 包含健康检查、故障切换和流量重定向
数据存储与恢复
- 控制平面配置和平台状态以 Kubernetes 资源形式存储在 etcd 中
- 在灾难性故障时,可通过 etcd 快照进行恢复
主备灾备
- 两个独立的
global
集群:主集群 和 备集群
- 灾备机制基于主集群到备集群的 etcd 数据实时同步
- 主集群发生故障不可用时,可快速切换至备集群提供服务
关键组件高可用机制
etcd
- 部署在三个(或五个)控制平面节点上
- 使用 RAFT 协议进行领导者选举和数据复制
- 三节点部署可容忍最多一个节点故障;五节点部署可容忍最多两个节点故障
- 支持本地和远程 S3 快照备份
监控组件
- Prometheus:多实例部署,结合 Thanos Query 实现去重和跨地域冗余
- VictoriaMetrics:集群模式,包含分布式 VMStorage、VMInsert 和 VMSelect 组件
日志组件
- Nevermore 负责采集日志和审计数据
- Kafka / Elasticsearch / Razor / Lanaya 以分布式和多副本模式部署
网络组件(CNI)
- Kube-OVN / Calico / Flannel:通过无状态 DaemonSet 或三副本控制平面组件实现高可用
ALB
- Operator 以三副本部署,启用领导者选举
- 支持实例级健康检查和负载均衡
自建 VIP
- 基于 Keepalived 的高可用虚拟 IP
- 支持心跳检测和主备切换
Harbor
- 基于 ALB 的负载均衡
- PostgreSQL 采用 Patroni 实现高可用
- Redis 采用哨兵模式
- 无状态服务以多副本部署
Registry 和 MinIO
- Registry 以三副本部署
- MinIO 采用分布式模式,支持纠删码、数据冗余和自动恢复