管理上万个Kubernetes集群的系统怎么设计?
作者 | 汤志敏 阿里云容器服务高级技术专家
-
得益于云原生时代的发展,越来越多的企业拥抱 Kubernetes,Kubernetes 已经逐渐成为云原生时代的基础设施,成为 platform of platform;
另一方面是业务需求,阿里云容器服务目前的支持覆盖了全球 20 个地域。
背景介绍
-
集群种类不同: 有标准的、无服务器的、AI 的、裸金属的、边缘、Windows 等 Kubernetes 集群。 不同种类的集群参数、组件和托管要求不一样,并且需要支撑更多面向垂直场景的 Kubernetes;
集群大小不一:每个集群规模大小不一,从几个节点到上万个节点,从几个 service 到几千个 service 等,需要能够支撑每年持续几倍集群数量的增长;
-
集群安全合规: 分布在不同的地域和环境的 Kubernetes 集群,需要遵循不同的合规性要求。 比如欧洲的 Kubernetes 集群需要遵循欧盟的 GDPR 法案,在中国的金融业和政务云需要有额外的等级保护等要求;
集群持续演进:需要能够持续的支持 Kubernetes 的新版本新特性演进。
设计目标
-
支持单元化的分档管理、容量规划和水位管理; -
支持全球化的部署、发布、容灾和可观测性; -
支持柔性架构的可插拔、可定制、积木式的持续演进能力。
1. 支持单元化的分档管理、容量规划和水位管理
单元化
分档化
容量规划
-
首先,要确认容器网络规划。 这里我们选择了阿里云自研的高性能容器网络 Terway, 一方面需要通过弹性网卡 ENI 打通用户 VPC 和托管 master 的网络,另一方面提供了高性能和丰富的安全策略;
-
接下来,我们需要结合 VPC 内的 ip 资源,做网段的规划,分别提供给 node、pod 和 service。
-
最后,我们会结合统计规律,结合成本、密度、性能、资源配额、档位配比等多种因素的综合考量,设计每个元集群单元中部署的不同档位的 guest Kubernetes 的个数,并预留 40% 的水位。
2. 支持全球化的部署、发布、容灾和可观测性
全球跨数据中心的可观测性
-
OS 指标,例如节点资源(CPU, 内存,磁盘等)水位以及网络吞吐; -
元集群以及用户集群 Kubernetes master 指标,例如 kube-apiserver, kube-controller-manager, kube-scheduler 等指标; -
Kubernetes 组件(kubernetes-state-metrics,cadvisor)采集的关于 Kubernetes 集群状态; -
etcd 指标,例如 etcd 写磁盘时间,DB size,Peer 之间吞吐量等等。
监控告警架构
-
边缘 Prometheus
-
级联 Prometheus
-
中心 Prometheus
优化策略
-
监控数据流量与 API server 流量分离
收集指定 Metric
Label 管理
3. 支持柔性架构的可插拔、可定制、积木式的持续演进能力
总结