大型企业项目中 Kubernetes (k8s)集群自动扩容/缩容方案和实践。
Airbnb 基础设施的一个重要作用是保证我们的云能够根据需求上升或下降进行自动扩缩容。我们每天的流量波动都非常大,需要依靠动态扩缩容来保证服务的正常运行。
为了支持扩缩容,Airbnb 使用了 Kubernetes 编排系统,并且使用了一种基于 Kubernetes 的服务配置接口[1] 。
本文我们将讨论如何使用 Kubernetes Cluster Autoscaler 来动态调整集群的大小,并着重介绍了我们为 Sig-Autoscalsing 社区[2] 做出的贡献。这些改进增加了可定制性和灵活性,以满足 Airbnb 独特的业务需求。
Airbnb 的 Kubernetes 集群
过去几年中,Airbnb 已经将几乎所有的在线服务从手动编排的 EC2 实例迁移到了 Kubernetes。如今,我们在近百个集群中运行了上千个节点来适应这些工作负载。然而,这些变化并不是一蹴而就的。在迁移过程中,随着新技术栈上的工作负载和流量越来越多,我们底层的 Kubernetes 集群也随之变得越来越复杂。这些演变可以划分为如下三个阶段:
阶段 1:同质集群,手动扩容
阶段 2:多集群类型,独立扩缩容
阶段 3:异构集群,自动扩缩容
阶段 1:同质集群,手动扩缩容
在使用