Kubernetes 大规模集群控制平面配置指南:SIG Scalability 的 Provider 选型与 etcd 架构实践

Kubernetes 大规模集群控制平面配置指南:SIG Scalability 的 Provider 选型与 etcd 架构实践 Kubernetes 大规模集群控制平面配置指南SIG Scalability 的 Provider 选型与 etcd 架构实践【免费下载链接】communityKubernetes Community Documentation项目地址: https://gitcode.com/GitHub_Trending/com/community本指南以 Kubernetes 社区 SIG Scalability 官方文档 provider-configs.md 为核心系统梳理大规模5000 节点级集群控制平面的云厂商机型选型、etcd 拆分与 IOPS 隔离、负载均衡与 Leader Election 配置等关键实践并结合同目录下的 thresholds.md、faq.md 与 slos.md 给出可验证的边界与依据。读完本文你将掌握为 Kubernetes 规模测试与生产大型集群挑选控制平面硬件、规划 etcd 存储、设计 5 节点控制面拓扑的完整方法。一、为什么控制平面配置是扩展性的第一道门槛在 Kubernetes 的扩展性定义中SLOService Level Objective的成立有一个前提集群的负载与配置必须落在推荐范围之内。正如 slos.md 所描述的you promise, we promise框架——用户承诺正确配置集群、合理使用扩展性特性、将负载控制在推荐阈值内社区才承诺所有 SLO 得到满足。其中正确配置集群很大程度就落在控制平面Control Plane的机器选型与存储规划上。provider-configs.md 正是 SIG Scalability 针对这一前提给出的官方配置基准它记录了社区用于 5000 节点规模测试的控制平面机型、配套的 etcd 拆分与磁盘规划以及测试者必须注意的若干配置细节。这份文档同时是开放给各云厂商的协作入口——文档明确表示尽可能广泛的云厂商机型选择对项目有益尚未列出的 Provider 的配置与测试结果非常受欢迎SIG Scalability 正在与下表所列的每一家 Provider 积极协作。二、控制平面机器选型四大 Provider 机型对照文档开篇给出了一张控制平面机型选型表这是整篇文档的骨架。表格中的Kubemark Needs一列指的是在使用 Kubemark 模拟集群时需要在外部集群中启动的空心节点Hollow Node承载机器数量。Provider机型Machine type核数Cores内存 GBMemoryKubemark 需求备注NotesGooglen1-standard-646424080 台实例用于 5000 节点测试结果AWSm4.16xlarge6425680 台实例提案ProposedAzurestandard-g532448最大核数实例提案ProposedPacketType 224256裸金属Bare metal提案Proposed几个值得注意的信息点Google 是当前唯一已用于 5000 节点测试结果的 Provider其余三家AWS、Azure、Packet均为提案状态尚未在官方测试中落地AWS 的 m4.16xlarge 与 Google 的 n1-standard-64 拥有相同的 64 核规格Kubemark 需求同为 80 台实例说明在 SIG 的评估中承载约 5000 个模拟节点需要约 80 台承载机器——这与 faq.md 中为模拟 5000 节点集群我们运行约 80 台机器、每台承载约 60 个 hollow-node的描述完全吻合Azure 的 standard-g5 是最大核数实例但只有 32 核内存却高达 448GB体现了不同云厂商在核数/内存配比上的差异Packet 的 Type 2 是裸金属方案24 核 256GB代表了对基础设施完全可控的部署形态。从 faq.md 中还可以补充一个更精确的控制平面规格参考用于 5000 节点测试的控制平面 VM 拥有64 核、256 GB 内存并配有 200GB SSD 持久盘。文档同时指出主流公有云通常提供更大规格的机器因此作为用户仍有向上扩展的余量slack。兼容性提示以上机型规格是 SIG Scalability 在其测试环境中验证或评估的基准配置表格中标注Proposed的条目尚未产生官方测试结果。在实际规划集群时应结合自身负载特征与云厂商当前在售的实例代际如 AWS m4 系列已属较老代际做等价替换。三、额外配置要求让大规模集群真正可扩展在机型之外provider-configs.md 用一节Additional Configuration Requirements列出控制平面配置的硬性要求。这些要求共同构成了 5000 节点测试的配置基线1. 版本与演进方向SIG Scalability 的工作重心当前面向1.6 及之后版本原文表述反映文档编写时的状态且这一重心会随时间推移迁移——SIG 的努力方向始终瞄准 trunk主干上的扩展性。这意味着文档中的配置基准是持续演进的落地时应以目标 Kubernetes 版本的最新官方阈值文档为准。2. etcd 版本是硬门槛etcd 的配置与调优是影响大规模集群扩展性的关键组件对集群扩展性有显著影响。最低 etcd 版本为3.1.8。在 Kubernetes 集群中etcd 承担着 API Server 持久化存储的角色其读写性能直接决定 API Server 的响应延迟。低于 3.1.8 的版本缺少后续版本中的关键性能优化无法满足大规模集群的写入吞吐要求。3. API Server 负载均衡 其余组件 Leader Election控制平面的部署形态被明确为API Server 配置为负载均衡多个 API Server 副本背后挂载负载均衡器分摊 API 请求其他组件Controller Manager、Scheduler 等使用标准的 Leader Election 机制保证同一时刻只有一个活跃 leader避免对 etcd 的重复写入。4. 容器运行时推荐 containerd出于性能原因最好使用 containerd 作为容器运行时。相比 Docker daemoncontainerd 更轻量、组件边界更清晰在大规模节点上可降低每容器的资源开销与延迟从而改善控制平面所在节点的整体性能表现。5. etcd 的双重角色与两条存储要求etcd 在集群中服务于两种截然不同的目的——集群状态cluster state与事件处理event processing二者具有不同的 I/O 特性。为了让扩展性测试结果稳定可信要求提供给 etcd 的 IOPS 必须一致且受保护。这引出了两条硬性要求拆分 etcdSplit etcd为事件events与集群状态cluster state分别建立两套独立的 etcd 集群。文档特别注明这同时也是当前 GKE 生产环境的默认做法为每台控制平面节点上的 etcd 集群提供独立、专用的 IOPS在裸金属安装中这可以表现为一块专用的 SSD。由于这要求针对不同 Provider 做更具体的配置文档随之给出了下面的存储配置表。四、etcd 存储配置按 Provider 的卷类型规划下表对应为每台控制平面节点上的两套 etcd 集群各准备一份独立存储的场景其中Size per etcd partition (2x)表示两套 etcdevents 与 state各自需要一份该大小的分区Provider卷类型Volume type每份 etcd 分区大小2x备注NotesGoogleSSD 持久盘SSD persistent disk256GBIOPS 随卷大小增加AWSEBS 预置 IOPS SSDio1256GB提案ProposedAzure未定Packet专用 SSDDedicated SSD256GB裸金属提案Proposed解读与实操要点256GB 是一个被多家 Provider 共同采用的基准Google / AWS / Packet其背后的逻辑正是 Google 备注的那句IOPS 随卷大小增加——云厂商的 SSD 卷IOPS 配额通常与卷容量成正比更大的卷意味着更高的稳定 IOPS 上限AWS 明确指向 io1预置 IOPS SSDio1 允许按需预置 IOPS而不是依赖突发积分burst credits这正契合IOPS 必须一致且受保护的要求——因为 etcd 的写入在事件风暴如大量 Pod 频繁重启时会瞬间暴涨突发型卷会在这个时刻拖垮 etcdAzure 与 Packet 的是文档有意留白Azure 尚未给出卷类型与大小Packet 则用裸金属上的专用 SSD来天然满足 IOPS 隔离需求物理隔离不受邻居卷影响生产落地上若使用 Azure应参考其对标 io1 的Azure Premium SSD 或 Ultra Disk规格做等价选择并保持与 Google/AWS 相同的容量量级256GB 级别以确保 IOPS 基准可比。五、目标控制平面集群配置5 节点拓扑将上述要求汇总文档给出了一个高层的目标控制平面拓扑。这份配置同时涵盖5 服务器集群5-server clusteretcd 拆分并分布到 5 个节点上split etcd across 5 nodesAPI Server 负载均衡API server load balanced其余组件使用 Leader Electionother components using leader election。细节上目标配置要求为 etcd 配置使用独立的卷即第四节的分区规划落实到每台节点。文档还给测试者留了一条非常实用的提示ELB负载均衡器默认的超时时间较短会导致控制平面组件频繁重新同步resync。使用者应将其设置为最大值。这条提示的底层逻辑是控制平面组件如 Controller Manager、Scheduler通过 API Server 建立长连接 Watch如果负载均衡器在空闲一段时间后强制断开 TCP 连接组件就会被迫重新 LIST-WATCHresync产生额外的 API Server 与 etcd 压力在高负载测试时会污染性能数据、甚至放大延迟。因此在 AWS 上对应ELB 的 idle timeout参数应调至最大值如 3600 秒在 Google Cloud 上对应负载均衡后端连接的空闲超时在裸金属/自建负载均衡如 HAProxy、nginx上同样需要关闭或大幅拉长空闲连接超时并启用 TCP keepalive。六、备选配置独立 etcd 集群的另一种拓扑考虑到上述etcd 与其余控制平面组件同机部署的架构存在 I/O 竞争风险事件流量与状态写入共享同一台机器的磁盘与网络资源文档明确给出了一个值得实验的备选方案因为部分生产环境正是这样构建的将 etcd 集群独立到专门的 5 台机器上仅运行 etcddedicated 5 machines for etcd only不再运行拆分 etcd即 state 与 events 可合并到同一 etcd 集群其余控制平面组件在另外 5 个节点上运行run remainder of control plane on 5 nodes separately文档还抛出一个开放讨论问题在每主机最大核数 64 的环境中这种配置是否有优势这一备选配置的工程意义在于隔离性etcd 的 I/O 完全不受控制平面组件尤其是 API Server 的请求处理与缓存干扰性能特征更稳定更易满足IOPS 一致且受保护的要求对低核数环境的适配当单机核数不足 64 时把控制平面拆成5 台 etcd 机 5 台组件机共 10 台每台机器的资源需求大幅下降机器选型更灵活代价机器数量翻倍、网络跳数增加etcd 与 API Server 之间多了一层网络往返是否值得取决于实际负载画像——这正是文档建议值得实验的原因。七、未来工作方向官方承认的开放问题文档明确列出 SIG Scalability 尚未解决的开放问题这些内容对理解官方配置基准的边界很有价值Leader Election 结果不确定在典型集群上leader election 的结果是非确定性的哪个节点成为 leader 是竞选的产物因此配置应按**最坏情况worst-case**来设计目前尚不清楚 leader election 导致组件共置co-location或分散distribution是否会产生性能影响负载建模的持续改进让集群性能负载更贴近生产部署场景是持续的关键工作尤其是clusterloader2Kubernetes 官方性能测试框架用于生成模拟真实工作负载的压测脚本与配置刻意单可用区Single AZ虽然生产环境中常用多可用区/多 AZ 部署来管理大型集群但测试与扩展性工作的目标有意设定为单一可用区以保证支持与不支持 AZ 部署的环境之间具有更高的一致性。同时扩展性测试中的故障场景不在 SIG 章程范围内——防网络分区network partitioning与提升整体集群可用性多 AZ 策略的关键收益之一目前明确超出SIG Scalability 的工作范围真实大集群的网络性能在真正的巨型节点集群而非 kubemark 模拟上扩展性问题真实存在改进大规模集群网络性能例如IPVS非常重要是值得跨 SIG 协作的有趣领域。八、与官方阈值和 SLO 的关系配置是 SLO 的前提provider-configs.md 的定位可以从整个 SIG Scalability 文档体系中得到更完整的解释。配置要求与扩展性阈值是配套的thresholds.md 给出了集群必须满足的对象数量阈值例如最大 5000 节点、10000 命名空间、150000 Pod、单命名空间 3000 Pod、每节点 Pod 数 min(110, 10×核数)以及 API Server / etcd 存储相关阈值单对象最大 1.5MB、对象总数 150000非 Event、Event 1000000 等只有集群配置满足本文档provider-configs的硬件与架构要求同时对象数量落在 thresholds.md 定义的可扩展性包络Scalability Envelope内slos.md 中承诺的 SLO如变更 API 调用延迟 99 分位 ≤ 1s、只读调用 namespace/cluster 范围 ≤ 30s、可调度无状态 Pod 启动延迟 ≤ 5s才具备成立的前提faq.md 进一步确认官方扩展性测试在100 节点与 5000 节点两个规模上执行所有测试使用单台大型控制平面 VM64 核、256GB、200GB SSD而 Kubemark 模拟集群的控制平面 VM 与真实集群一致——这些数字与本文档表格中的 Google 机型64 核 / 240GB同源互相印证。更完整的 Kubemark 实操指引可参考仓库内的 kubemark-guide.md它详细说明了真实 master 若干空心节点HollowNode的模拟架构、启动脚本test/kubemark/start-kubemark.sh的流程以及NUM_NODES、KUBEMARK_MASTER_SIZE等关键变量——这正是本文档表格中Kubemark Needs一列背后的实现细节。九、总结一份可执行的配置检查清单将本文要点收敛为落地清单供规划 5000 节点级集群或复现官方规模测试时逐项核对维度官方要求参考来源控制平面机型≥64 核 / 256GB 量级Google n1-standard-64、AWS m4.16xlarge 为基准provider-configs.mdetcd 版本≥ 3.1.8同上API Server配置负载均衡同上其余组件标准 Leader Election同上容器运行时推荐 containerd同上etcd 存储events 与 cluster state 拆分两套集群每套独立 256GB 高 IOPS SSDIOPS 随卷大小增长同上负载均衡超时ELB 空闲超时设为最大值避免控制平面组件频繁 resync同上对象数量5000 节点 / 10000 命名空间 / 150000 Pod 等阈值内thresholds.md验证方式官方以 100 节点与 5000 节点两档规模测试Kubemark 用于更大规模模拟faq.md、kubemark-guide.md需要再次强调表中标Proposed的 Provider 配置尚未在官方测试中产生结果且 SIG 的工作重心随时间向主干演进落地前应结合目标 Kubernetes 版本与所选云厂商的最新实例代际做等价换算。另可参考 etcd 官方的硬件规划指南Hardware guidelines for administering etcd clusters原文档 References 所引资料来进一步校准磁盘与内存配比——其核心结论与本文一致为 etcd 提供充足、稳定、隔离的 IOPS是保证大规模集群控制平面可扩展性的第一原则。【免费下载链接】communityKubernetes Community Documentation项目地址: https://gitcode.com/GitHub_Trending/com/community创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考