跳转至

EKS 可扩展性最佳实践

本指南提供了有关扩展 EKS 集群的建议。扩展 EKS 集群的目标是最大化单个集群可以执行的工作量。使用单个大型 EKS 集群可以减少与使用多个集群相比的操作负载,但在多区域部署、租户隔离和集群升级等方面存在权衡。在本文档中,我们将重点介绍如何实现单个集群的最大可扩展性。

如何使用本指南

本指南面向在 AWS 中负责创建和管理 EKS 集群的开发人员和管理员。它着重于一些通用的 Kubernetes 扩展实践,但并未涉及自管理 Kubernetes 集群或在 AWS 区域之外运行的集群的具体情况,例如使用 EKS Anywhere

每个主题都有一个简短的概述,后面是有关大规模运行 EKS 集群的建议和最佳实践。主题不需要按特定顺序阅读,并且在测试和验证建议在您的集群中有效之前,不应应用这些建议。

了解扩展维度

可扩展性与性能和可靠性不同,在规划集群和工作负载需求时应考虑这三个方面。随着集群的扩展,需要对其进行监控,但本指南不会涵盖监控最佳实践。EKS 可以扩展到很大的规模,但您需要规划如何将集群扩展超过 300 个节点或 5000 个 Pod。这些并非绝对数字,而是通过与多个用户、工程师和支持专业人员合作制定本指南时得出的结果。

Kubernetes 中的扩展是多维的,没有特定的设置或建议适用于每种情况。我们可以就以下主要领域提供扩展指导:

Kubernetes 控制平面在 EKS 集群中包括 AWS 为您自动运行和扩展的所有服务(例如 Kubernetes API 服务器)。扩展控制平面是 AWS 的责任,但负责任地使用控制平面是您的责任。

Kubernetes 数据平面扩展涉及集群和工作负载所需的 AWS 资源,但它们位于 EKS 控制平面之外。随着集群的扩展,需要扩展 EC2 实例、kubelet 和存储等资源。

集群服务是在集群内运行并为集群和工作负载提供功能的 Kubernetes 控制器和应用程序。这些可以是 EKS 插件以及您为合规性和集成而安装的其他服务或 Helm 图表。这些服务通常由工作负载依赖,随着工作负载的扩展,您的集群服务也需要相应扩展。

工作负载是您拥有集群的原因,应该与集群一起水平扩展。工作负载在 Kubernetes 中有一些集成和设置可以帮助集群扩展。在 Kubernetes 抽象概念(如命名空间和服务)方面也有一些架构考虑因素。

超大规模扩展

如果您要将单个集群扩展超过 1000 个节点或 50,000 个 Pod,我们很乐意与您交谈。我们建议与您的支持团队或技术账户经理联系,以与专家取得联系,他们可以帮助您规划和扩展超出本指南提供的信息。