个人博客导航页(点击右侧链接即可打开个人博客):互联网老兵带你入门技术栈
在 2019 年 双11 中,容器服务 ACK 支撑了阿里巴巴内部核心系统容器化和阿里云的云产品本身,也将阿里巴巴多年的大规模容器技术以产品化的能力输出给众多围绕 双11 的生态公司。通过支撑来自全球各行各业的容器云,容器服务沉淀了支持单元化全球化架构和柔性架构的云原生应用托管中台能力,管理了超过 1W 个以上的容器集群。本文将会介绍容器服务在海量 Kubernetes 集群管理上的实践经验。
什么是海量 Kubernetes 集群管理?
大家可能之前看过一些分享,介绍了阿里巴巴如何管理单集群 1W 节点的最佳实践,管理大规模节点是一个很有意思的挑战。不过这里讲的海量 Kubernetes 集群管理,会侧重讲如何管理超过 1W 个以上不同规格的 Kubernetes 集群。根据我们和一些同行的沟通,往往一个企业内部只要管理几个到几十个 Kubernetes 集群,那么我们为什么需要考虑管理如此庞大数量的 Kubernetes 集群?
-
首先,容器服务 ACK 是阿里云上的云产品,提供了 Kubernetes as a Service 的能力,面向全球客户,目前已经在全球 20 个地域支持;
-
其次,得益于云原生时代的发展,越来越多的企业拥抱 Kubernetes,Kubernetes 已经逐渐成为云原生时代的基础设施,成为 platform of platform。
背景介绍
首先我们一起来看下托管这些 Kubernetes 集群的痛点:
1.集群种类不同:有标准的、无服务器的、AI 的、裸金属的、边缘、Windows 等 Kubernetes 集群。不同种类的集群参数、组件和托管要求不一样,并且需要支撑更多面向垂直场景的 Kubernetes;
2.集群大小不一:每个集群规模大小不一,从几个节点到上万个节点,从几个 service 到几千个 service 等,需要能够支撑每年持续几倍集群数量的增长;
3.集群安全合规:分布在不同的地域和环境的 Kubernetes 集群,需要遵循不同的合规性要求。比如欧洲的 Kubernetes 集群需要遵循欧盟的 GDPR 法案,在中国的金融业和政务云需要有额外的等级保护等要求;
4.集群持续演进:需要能够持续的支持 Kubernetes 的新版本新特性演进。
设计目标:
- 支持单元化的分档管理、容量规划和水位管理;
- 支持全球化的部署、发布、容灾和可观测性;
- 支持柔性架构的可插拔、可定制、积木式的持续演进能力。
1.支持单元化的分档管理、容量规划和水位管理
单元化
一般讲到单元化,大家都会联想到单机房容量不够或二地三中心灾备等场景。那单元化和 Kubernetes 管理有什么关系?
对我们来说,一个地域(比如:杭州)可能会管理几千个 Kubernetes,需要统一维护这些 Kubernetes 的集群生命周期管理。作为一个 Kubernetes 专业团队,一个朴素的想法就是通过多个 Kubernetes 元集群来管理这些 guest K8s master。而一个 Kubernetes 元集群的边界就是一个单元。
曾经我们经常听说某某机房光纤被挖断&#x