大型集群的注意事项

集群是一组在 Kubernetes 代理运行的 节点(物理机或虚拟机),由 控制平面 管理。 Kubernetes v1.31 支持最多 5,000 个节点的集群。更准确地说,Kubernetes 被设计为适应符合以下所有条件的配置

  • 每个节点不超过 110 个 Pod
  • 不超过 5,000 个节点
  • 不超过 150,000 个总 Pod
  • 不超过 300,000 个总容器

您可以通过添加或移除节点来扩展集群。您执行此操作的方式取决于集群的部署方式。

云提供商资源配额

为了避免遇到云提供商配额问题,在创建具有多个节点的集群时,请考虑

  • 为以下云资源请求配额增加
    • 计算实例
    • CPU
    • 存储卷
    • 正在使用的 IP 地址
    • 数据包过滤规则集
    • 负载均衡器数量
    • 网络子网
    • 日志流
  • 将集群扩展操作限制在批次中,并在批次之间暂停,因为某些云提供商会对创建新实例进行限速。

控制平面组件

对于大型集群,您需要一个具有足够的计算能力和其他资源的控制平面。

通常,您会在每个故障域中运行一到两个控制平面实例,首先垂直扩展这些实例,然后在达到 (垂直) 扩展的收益递减点后进行水平扩展。

您应该在每个故障域中运行至少一个实例以提供容错能力。Kubernetes 节点不会自动将流量转向同一故障域中的控制平面端点;但是,您的云提供商可能具有自己的机制来执行此操作。

例如,使用托管负载均衡器,您可以配置负载均衡器以发送来自 kubelet 和 Pod 的故障域 *A* 中的流量,并将该流量仅定向到也在区域 *A* 中的控制平面主机。如果单个控制平面主机或端点故障域 *A* 离线,这意味着来自区域 *A* 中的节点的所有控制平面流量现在都在区域之间发送。在每个区域中运行多个控制平面主机可以降低这种结果的可能性。

etcd 存储

为了提高大型集群的性能,您可以将事件对象存储在单独的专用 etcd 实例中。

在创建集群时,您可以(使用自定义工具)

  • 启动和配置其他 etcd 实例
  • 配置 API 服务器 以使用它存储事件

有关为大型集群配置和管理 etcd 的详细信息,请参阅 为 Kubernetes 操作 etcd 集群使用 kubeadm 设置高可用性 etcd 集群

附加组件资源

Kubernetes 资源限制 有助于最大程度地减少内存泄漏以及 Pod 和容器可能影响其他组件的其他方式的影响。这些资源限制适用于 附加组件 资源,就像它们适用于应用程序工作负载一样。

例如,您可以为日志记录组件设置 CPU 和内存限制

  ...
  containers:
  - name: fluentd-cloud-logging
    image: fluent/fluentd-kubernetes-daemonset:v1
    resources:
      limits:
        cpu: 100m
        memory: 200Mi

附加组件的默认限制通常基于从在小型或中型 Kubernetes 集群上运行每个附加组件获得的经验数据。在大型集群上运行时,附加组件通常比其默认限制消耗更多某些资源。如果在未调整这些值的情况下部署大型集群,则附加组件可能会不断被杀死,因为它们会不断达到内存限制。或者,附加组件可能会运行,但由于 CPU 时间片限制而导致性能低下。

为了避免遇到集群附加组件资源问题,在创建具有多个节点的集群时,请考虑以下因素

  • 某些附加组件会垂直扩展 - 对于集群或服务整个故障域,只有一个附加组件副本。对于这些附加组件,请在扩展集群时增加请求和限制。
  • 许多附加组件会水平扩展 - 您通过运行更多 Pod 来添加容量 - 但对于非常大的集群,您可能还需要稍微提高 CPU 或内存限制。 垂直 Pod 自动缩放器 可以以 *推荐器* 模式运行,以提供对请求和限制的建议数字。
  • 某些附加组件在每个节点上运行一个副本,由 DaemonSet 控制:例如,节点级日志聚合器。与水平扩展的附加组件类似,您可能还需要稍微提高 CPU 或内存限制。

下一步

  • VerticalPodAutoscaler 是一个自定义资源,您可以将其部署到集群中,以帮助您管理 Pod 的资源请求和限制。
    详细了解 垂直 Pod 自动缩放器 以及如何使用它来扩展集群组件,包括集群关键附加组件。

  • 阅读有关 集群自动缩放 的内容

  • 附加组件调整器 可帮助您在集群规模发生变化时自动调整附加组件的大小。

上次修改时间:2024 年 6 月 27 日上午 8:31 PST:更新 cluster-large.md (27ac207f0f)