估计群集大小 - 节点
现在需要确定所需的虚拟机 (VM) 节点类型以及需要运行多少个节点。
需要什么大小的虚拟机?
在 Azure Kubernetes 服务 (AKS) 中,群集中的每个节点都是一个 Azure VM。 VM 有各种规格,可帮助支持不同类型的应用程序的需求。 某些应用程序可能需要更高的处理能力或内存,或者更快的存储速度。 你需要选择满足应用程序需求的 VM 类别和实例。
需要确保该类型的内存和处理能力足以满足应用程序的需求。 请记住,并非所有内存和处理能力都可供应用程序使用。 其中有一部分是操作系统和 Kubernetes 系统组件所需要的。 AKS 会自动保留一定数量的内存和处理能力,以确保这些关键系统组件可以根据需要运行。
在 AKS 群集中部署的默认 VM 类型为 D2 v3 常规用途虚拟机,这是一个具有 8 GB 内存的两核 VM。 AKS 会保留 100 毫核的处理器和 3.55 GiB 的内存,为应用程序留出了 1,900 毫核(1.9 个内核)和 5.45 Gi 内存。
提示
保留的处理器和内存量因所选 VM 的类型而异。 随着 VM 大小的增加,此数量会按比例减小。
另一个需要考虑的因素是滞留资源。 假设将三个应用程序部署到 D2 v3 节点。 这些应用程序中的每一个都需要 600 个毫核的处理器和 500 Mi 的内存。 部署这些应用程序后,还剩 100 毫核的处理器,并且大约还有 2.05 GiB 的未使用内存。 如果部署了应用程序的第四个实例,则需要将其发送到新节点,因为剩余的 100 毫核是不够的。 但是,这会在该节点上留下 2 GiB 无法使用的内存。 该内存资源称为“滞留”资源。
理想的 VM 选择是具有足够的容量来运行工作负载,同时又不会使资源滞留。 如果工作负载动态地纵向扩展和缩减,则需要足够的资源来覆盖典型的使用方案,但又要能够在需要时灵活地纵向扩展。
需要多少个节点?
应用程序应始终可用,并且能够处理基础节点的故障。 你可以通过分布在多个节点上的多个应用程序副本提供复原能力。
AKS 具有节点池,它们是同一类型的 VM 所构成的组。 你可以有多个节点池。 例如,可以有三个节点池,它们分别包含常规用途的 VM、内存优化型 VM 和配备了 GPU 的 VM。 然后,可以使用原生 Kubernetes 计划功能来确保将工作负载部署到适当的节点池和 VM 类型。
节点池可以支持以下两种模式之一:“系统”或“用户”。 系统节点池运行对 Kubernetes 群集的运行至关重要的关键系统 Pod,包括存储驱动程序、DNS 或指标服务器等服务。 用户节点池运行应用程序。
在默认配置中,Azure 群集包含一个系统节点池,用于运行所有内容。 如果需要,可以添加额外的系统或用户节点池,并将应用程序 Pod 配置为以独占方式在用户节点池中运行。 关键系统 Pod 仅在系统节点池中运行。 使用系统和用户节点池可以防止配置不正确的应用程序影响关键系统服务的运行,以及潜在地导致群集失败。
Kubernetes 还可以在必要时添加或移除节点。 如果计划使用此功能,需要为 Kubernetes 可以纵向扩展到的最大节点数定义一个上限。 然后,围绕该最大数量规划网络设计。 请记住,每个群集需要考虑至少一个额外的节点,以便更新过程正常运行。
提示
你可以配置在给定时间更新的节点数,默认为一个节点。 一次升级多个节点可以减少升级群集所用的总时间。 你需要在规划过程中考虑额外的节点。
应运行多少个节点?
若要确定要运行的节点数,需要了解应用程序的处理器和内存要求。 开发团队为你提供了性能测试的结果,其中详细介绍了服务需要多少处理器和内存。 结果包括基线要求以及繁忙时期的最大数量:
服务 | 处理器最小值/最大值 | 内存最小值/最大值 |
---|---|---|
网站前端 | 250 m/1000 m | 250 Mi/1 Gi |
标识 API | 100 m/500 m | 250 Mi/500 Mi |
目录 API | 500 m - 1000 m | 1 Gi/1 Gi |
订单 API | 100 m - 1000 m | 100 Mi/1 Gi |
订单帮助程序 | 100 m - 1000 m | 100 Mi/1 Gi |
购物车 API | 100 m - 1000 m | 500 Mi/500 Mi |
市场营销 API | 250 m - 750 m | 500 Mi/1 Gi |
位置 API | 100 m - 500 m | 100 Mi/500 Mi |
提示
- Kubernetes 以毫核(或千分之一核)来衡量处理器的使用情况。 因此,100 豪核相当于十分之一个核心,1000 豪核相当于一个处理器核心。
- 衡量内存的方式则有多种。 性能测试结果图中的示例使用的是 Mi 和 Gi,分别等效于 MB 和 GB。 500Mi 通常称为 500 MB,1Gi 通常称为 1 GB。
调整节点大小
你确定了每个服务应运行的最小副本数,以及每个服务所需的最小处理器核心数和内存量。 通过此计算,你得到的起始数据为 1.5 个核心和 2.8Gi 内存。 当应用程序纵向扩展到其最大副本数并使用其最大处理器核心数和内存量时,它需要 53 个核心和 50 GB 的内存。
在此方案中,工作负载占用了大量 CPU。 如果使用默认的 D2 v3 常规用途 VM,则需要大量 VM 才能满足工作负载的处理器要求。 此配置会导致 VM 中存在大量未使用的内存。 让我们考虑一种适用于计算密集型工作负载的 VM 类型。 例如,Fsv2 系列中的某些类型只需较少的 VM 即可满足处理器要求,并且会有更少的未使用内存。
F8s v2 VM 类型具有 8 个核心和 16 GB 内存。 使用 AKS 资源预留,可为每个节点提供 7820 毫核和 12.65Gi。 以最大规模运行时,将需要七个 VM 来处理工作负载。
接下来,你需要考虑一下网络。