ITPub博客

首页 > 数据库 > 数据库开发技术 > 大规模场景下K8S集群设计与实践|大企业5000个节点k8s架构设计|干货,无广告

大规模场景下K8S集群设计与实践|大企业5000个节点k8s架构设计|干货,无广告

原创 数据库开发技术 作者:DevOps和k8s全栈技术 时间:2024-08-30 09:00:00 0 删除 编辑


要设计一个大规模的Kubernetes(K8s)集群,比如5000个节点的集群时,可以从以下几个方面综合考虑:

1. 集群规模和节点配置

1.1 多节点小配置方案

  • 目标:通过部署多个节点来满足服务要求,每个节点的配置相对较小。


  • 优点:

    • 高可用性:节点分布广泛,单点故障对整体集群影响小。

    • 弹性:易于扩展和收缩,增加或减少节点相对简单。

    • 容错性:节点数量多,单节点故障不会对整个集群造成重大影响。


  • 缺点:

    • 管理复杂:需要管理大量的节点,可能需要自动化工具和运维团队来处理节点的状态和配置。

    • 网络延迟:由于节点较多,网络延迟可能会增加,影响集群内部通信的效率。


1.2 少节点大配置方案

  • 目标:通过部署少量节点,每个节点配置较大,以满足服务需求。


  • 优点:

    • 管理简化:节点数量少,管理和维护成本降低。

    • 资源利用率高:每个节点能够容纳更多的Pod,提高资源利用率。

    • 网络性能:节点数量少,集群内部网络通信延迟较低。


  • 缺点:

    • 资源竞争:少量节点上运行的Pod较多,可能会引发资源竞争问题。

    • 单点故障风险:节点故障可能对整体服务影响较大,需要设计合理的高可用策略。

    • 开销增加:每个Pod引入的开销(如容器运行时、kubelet、cAdvisor等)在节点上运行更多Pod时增加,可能影响节点的性能和稳定性。


综合方案:折中处理,如每个节点默认可以跑110个pod,那我们工作时让每个节点能运行50个pod为标准,合理分配k8s节点数量即可。

具体场景如下:

1. 需求分析

  • 1)应用程序:有1000个程序。

  • 2)每个程序:需要3个Pod以保证高可用性。

  • 3)每个节点的Pod容量:设计为每个节点运行50个Pod。

  • 4)节点的Pod运行能力:假设每个节点默认支持运行110个Pod,但为了稳定性和管理考虑,我们按每节点运行50个Pod来设计。

2. 计算所需Pod总数

  • 1)每个程序需要3个Pod。

  • 2)1000个程序总共需要的Pod数量为: 1000 个程序×3 个Pod =3000 个Pod

3. 计算所需节点数量

  • 1)每个节点最多运行50个Pod。

  • 2)需要的节点数量为:所需节点数量=总Pod数量/每节点Pod数量=3000/50=60 个节点


按照上面方法虽然可以计算大概的节点数量,但是每个节点分配多大的cpu和内存,无法估算,如何做?

1、评估每个Pod的资源需求

首先需要了解每个Pod的CPU和内存需求。假设每个Pod都有不同的资源需求,通常需要先确定以下信息:

  • 1)Pod的CPU请求和限制(request and limit):即Pod运行时期望使用的CPU资源和它能够使用的最大CPU资源。


  • 2)Pod的内存请求和限制:即Pod运行时期望使用的内存资源和它能够使用的最大内存资源。

为了计算方便,可以先假设每个Pod的资源需求的平均值或根据实际情况的某个具体值。举例说明:

  • 1)假设每个Pod平均请求0.5个CPU(500m     CPU),最大允许使用1个CPU(1000m CPU)。

  • 2)假设每个Pod平均请求1GB内存,最大允许使用2GB内存。


2、计算总的资源需求

根据Pod的资源需求,可以计算出整个集群的总资源需求:

3、 计算单个节点所需的资源

每个节点需要运行50个Pod,因此可以计算出单个节点的资源需求:

4、考虑节点的资源冗余

为了保证节点的稳定性,通常不会将节点的资源完全分配给Pod,需要为系统预留一定的资源(如系统进程、日志、监控工具等)。假设为系统预留20%的资源:


5、总结节点配置

根据上述计算,单个节点应该配置至少以下资源:

  • 1)CPU:约31.25个CPU cores。

  • 2)内存:约62.5GB内存。


6、 调整和优化

  • 1)如果Pod的资源需求波动较大,可以考虑给每个节点留出更多的冗余。

  • 2)可以通过监控实际运行时的资源使用情况,进一步调整节点的配置。

  • 3)如果实际运行时发现部分节点资源利用率较低,可以考虑增加Pod的密度,或者减小节点的资源分配。


本月精彩文章推荐

原文作者:DevOps和k8s全栈技术;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
云计算架构师、阿里云开发者社区专家博主、腾讯云架构师北京同盟成员、Linux基金会开源软件学园2023、2024年度优秀讲师,在中国计算机学会(CCF)任职人工智能与模式识别委员和计算机应用委员、中国科普作家协会会员,清华大学出版社出版的畅销书《Kubernetes从入门到DevOps企业应用实战》作者。

注册时间:2017-10-15

  • 博文量
    127
  • 访问量
    61686