Compartir a través de

大规模创建和运行 Azure Kubernetes 服务 (AKS) 群集的最佳做法

如果 AKS 群集满足以下任一条件,我们建议使用 运行时间 SLA 功能附带的标准层 ,以提高 Kubernetes 控制平面的可靠性和可伸缩性:

  • 运行生产工作负荷或可用性敏感、任务关键型工作负荷的群集
  • 平均运行超过 10 个节点的群集
  • 需要扩展超过 1000 个节点的群集

若要将 AKS 群集扩展到超过 1000 个节点,需要在 Azure 门户 中提交支持请求,申请增加节点限制配额,每个群集最多至 5000 个节点。 增加节点限制不会增加其他 AKS 服务配额限制,例如每个节点的 Pod 数。 有关详细信息,请参阅 AKS 资源的限制、配额和限制

若要将节点限制提高到 1000 之外,必须具备以下先决条件:

  • 需要提升节点限制的现有 AKS 群集。 不应删除此群集,因为这样将撤销限制增加。
  • 使用标准层的群集。
  • 使用 Kubernetes 1.23 或更高版本的群集。

注释

最多可能需要一周才能启用节点限制增加的群集。

网络注意事项和最佳做法

  • 使用托管 NAT 为群集出口通过 NAT 网关提供至少 2 个公共 IP。 有关详细信息,请参阅 使用 AKS 的托管 NAT 网关
  • 在内部负载均衡器后面使用内部 Kubernetes 服务时,建议创建低于 750 节点缩放的内部负载均衡器或内部服务,以实现最佳的缩放性能和负载均衡器弹性。

注释

Azure Policy 网络管理器(Azure NPM) 不支持具有 250 个以上的节点的群集,并且不能在所有代理池中使用群集自动缩放程序管理的超过 250 个节点更新群集。

节点池缩放注意事项和最佳做法

  • 对于系统节点池,请使用 Standard_D16ds_v5 SKU 或具有临时 OS 磁盘的等效核心/内存 VM SKU,为 kube-system Pod 提供足够的计算资源。
  • 由于每个节点池的节点数限制为 1000 个,因此建议创建至少五个用户节点池,以纵向扩展到 5000 个节点。
  • 在大规模 AKS 群集运行时,尽可能使用群集自动缩放程序,确保根据计算资源的需求动态缩放节点池。 有关详细信息,请参阅 自动缩放 AKS 群集以满足应用程序需求
  • 如果在不使用群集自动缩放程序的情况下缩放超过 1000 个节点,建议一次最多缩放 500 到 700 个节点。 这些缩放操作还应在连续扩展操作之间有两分钟到五分钟的等待时间,以避免 Azure API 限制。 有关详细信息,请参阅 API 管理:缓存和限制策略

注释

不能将“ 停止”和“启动”功能 用于启用了大于 1000 个节点限制的群集。

群集升级注意事项和最佳做法

  • 每个 AKS 群集的 5000 个节点的硬限制会阻止此限制的群集执行升级。 此限制可防止这些升级执行,因为没有更多容量使用最大激增属性执行滚动更新。 如果群集处于此限制,建议先将群集缩减到 3000 个以下节点,然后再执行群集升级,为节点变动提供额外的容量,并尽量减少控制平面负载。
  • 默认情况下,AKS 配置升级时通过“最大突增设置”增加一个额外节点。 此默认值允许 AKS 通过在现有应用程序的封锁/清空之前创建额外的节点来最大程度地减少工作负荷中断,以替换旧版节点。 升级具有大量节点的群集时,使用默认的最大激增设置可能会导致升级需要几个小时才能完成。 完成过程可能需要很长时间,因为升级需要对大量节点进行处理。 可以自定义每个节点池的最大激增设置,以便在升级速度和升级中断之间实现权衡。 增加最大激增设置时,升级过程会更快完成,但在升级过程中可能会遇到中断。
  • 不建议升级具有大于 500 个节点的群集,其默认最大激增配置为一个节点。 相反,我们建议将最大激增设置增加到 10%到 20% 之间的某个位置,最大激增最多为 500 个节点。 根据您的工作负载中断耐受性来设置这些选项。 有关详细信息,请参阅 自定义节点激增升级
  • 有关群集升级的详细信息,请参阅 升级 AKS 群集