其他
阿里云上万个 Kubernetes 集群大规模管理实践
本文节选自《不一样的 双11 技术:阿里巴巴经济体云原生实践》一书
导读:在 2019 年 双11 中,容器服务 ACK 支撑了阿里巴巴内部核心系统容器化和阿里云的云产品本身,也将阿里巴巴多年的大规模容器技术以产品化的能力输出给众多围绕 双11 的生态公司。通过支撑来自全球各行各业的容器云,容器服务沉淀了支持单元化全球化架构和柔性架构的云原生应用托管中台能力,管理了超过 1W 个以上的容器集群。本文将会介绍容器服务在海量 Kubernetes 集群管理上的实践经验。
首先,容器服务 ACK 是阿里云上的云产品,提供了 Kubernetes as a Service 的能力,面向全球客户,目前已经在全球 20 个地域支持;
其次,得益于云原生时代的发展,越来越多的企业拥抱 Kubernetes,Kubernetes 已经逐渐成为云原生时代的基础设施,成为 platform of platform。
背景介绍
集群种类不同:有标准的、无服务器的、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. 支持柔性架构的可插拔、可定制、积木式的持续演进能力
组件可插拔
组件检查
组件升级
集群模板
总结
本书亮点
双11 超大规模 K8s 集群实践中,遇到的问题及解决方法详述
云原生化最佳组合:Kubernetes+容器+神龙,实现核心系统 100% 上云的技术细节
双 11 Service Mesh 超大规模落地解决方案